【发布时间】:2020-12-16 14:57:54
【问题描述】:
我需要创建一些视图,并且我需要允许用户(登录)访问仅授予他的视图,我使用了休闲脚本。
USE master;
GO
CREATE LOGIN [MYLogin] WITH PASSWORD = 'Password@123'
USE [TEST]
CREATE USER [MYUser] FROM LOGIN [MYLogin]
CREATE ROLE [MYUserRead]
EXEC sp_addrolemember 'MYUserRead','MYUser'
GO
CREATE VIEW viGetA
AS
SELECT * from dbo.A
GO
GRANT SELECT ON viGetA TO [MYUserRead]
GO
我只能查看当我使用上面创建的用户帐户 MYLogin 登录时授予的视图,但我可以看到主数据库、其他数据库(即使我无法从用户创建的数据库访问对象)但我是能够访问Test数据库和master数据库的sys视图和sys过程。
如何限制用户在登录管理工作室时不查看任何其他数据库,如 master、temp、MyDatabse ..etc 和任何系统对象(sys 视图、DMV)。
请帮助我们为用户提供脚本,这些用户只能查看一个数据库,并且只能查看为该用户角色授予的视图。
请查看下图以供参考。
【问题讨论】:
标签: sql sql-server sql-server-2012