Advertisement
Guest User

Untitled

a guest
Sep 18th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. CREATE USER foo WITHOUT LOGIN;
  2. GO
  3. CREATE TABLE dbo.a(id INT);
  4. CREATE TABLE dbo.b(id INT);
  5. GO
  6. CREATE VIEW dbo.v
  7. AS
  8. SELECT a.id FROM a INNER JOIN b ON a.id = b.id;
  9. GO
  10. GRANT SELECT ON dbo.v TO foo;
  11. GO
  12. EXECUTE AS USER = N'foo';
  13. GO
  14. -- works:
  15. SELECT id FROM dbo.v;
  16. GO
  17. -- Msg 229, SELECT denied:
  18. SELECT id FROM dbo.a;
  19. GO
  20. REVERT;
  21.  
  22. CREATE DATABASE d1;
  23. GO
  24. CREATE DATABASE d2;
  25. GO
  26. USE [master];
  27. GO
  28. CREATE LOGIN blat WITH PASSWORD = 'x', CHECK_POLICY = OFF;
  29. GO
  30.  
  31. USE d1;
  32. GO
  33. CREATE USER blat FROM LOGIN blat;
  34. GO
  35. CREATE TABLE dbo.t1(id INT);
  36. GO
  37. CREATE VIEW dbo.v1
  38. AS
  39. SELECT id FROM dbo.t1;
  40. GO
  41. GRANT SELECT ON dbo.v1 TO blat;
  42. GO
  43.  
  44. USE d2;
  45. GO
  46. CREATE USER blat FROM LOGIN blat;
  47. GO
  48. CREATE TABLE dbo.t2(id INT);
  49. GO
  50. CREATE VIEW dbo.v2
  51. AS
  52. SELECT v1.id FROM dbo.t2
  53. INNER JOIN d1.dbo.v1 AS v1
  54. ON t2.id = v1.id;
  55. GO
  56. GRANT SELECT ON dbo.v2 TO blat;
  57. GO
  58.  
  59. SELECT id FROM d1.dbo.v2;
  60.  
  61. SELECT id FROM d1.dbo.t1;
  62. GO
  63. SELECT id FROM d2.dbo.t2;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement