Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE USER foo WITHOUT LOGIN;
- GO
- CREATE TABLE dbo.a(id INT);
- CREATE TABLE dbo.b(id INT);
- GO
- CREATE VIEW dbo.v
- AS
- SELECT a.id FROM a INNER JOIN b ON a.id = b.id;
- GO
- GRANT SELECT ON dbo.v TO foo;
- GO
- EXECUTE AS USER = N'foo';
- GO
- -- works:
- SELECT id FROM dbo.v;
- GO
- -- Msg 229, SELECT denied:
- SELECT id FROM dbo.a;
- GO
- REVERT;
- CREATE DATABASE d1;
- GO
- CREATE DATABASE d2;
- GO
- USE [master];
- GO
- CREATE LOGIN blat WITH PASSWORD = 'x', CHECK_POLICY = OFF;
- GO
- USE d1;
- GO
- CREATE USER blat FROM LOGIN blat;
- GO
- CREATE TABLE dbo.t1(id INT);
- GO
- CREATE VIEW dbo.v1
- AS
- SELECT id FROM dbo.t1;
- GO
- GRANT SELECT ON dbo.v1 TO blat;
- GO
- USE d2;
- GO
- CREATE USER blat FROM LOGIN blat;
- GO
- CREATE TABLE dbo.t2(id INT);
- GO
- CREATE VIEW dbo.v2
- AS
- SELECT v1.id FROM dbo.t2
- INNER JOIN d1.dbo.v1 AS v1
- ON t2.id = v1.id;
- GO
- GRANT SELECT ON dbo.v2 TO blat;
- GO
- SELECT id FROM d1.dbo.v2;
- SELECT id FROM d1.dbo.t1;
- GO
- SELECT id FROM d2.dbo.t2;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement