gpt4 book ai didi

sql - 如何授予用户访问 SQL Server 中的所有 View 但不能访问表和存储过程?

转载 作者:行者123 更新时间:2023-12-02 03:43:25 25 4
gpt4 key购买 nike

我正在尝试创建一个新的临时用户,该用户只能访问所有只读 View 。

用户不应具有对表和存储过程的读取权限。

我尝试了以下查询,但它也提供了对表的访问权限。

EXEC sp_addrolemember db_datareader, 'user1'

GRANT VIEW DATABASE STATE TO 'user1'
GRANT VIEW DEFINITION TO 'user1'

最佳答案

执行此操作的主要方法是仅向 View 对象授予权限。您可以使用以下语句遍历数据库中的所有 View :

DECLARE @sql VARCHAR(MAX)

SELECT GrantStatement = 'GRANT SELECT ON ' + TABLE_NAME + ' TO user1'
INTO #grants
FROM
INFORMATION_SCHEMA.Views

WHILE EXISTS (SELECT 1 FROM #grants)
BEGIN
SELECT TOP 1 @sql = GrantStatement
FROM #grants

EXEC (@sql)

DELETE #grants
WHERE GrantStatement = @sql
END

第二种技术是创建一个仅用于 View 的单独模式,然后将权限授予整个模式。可以这样做:

GRANT SELECT ON SCHEMA::ViewSchema TO user1

关于sql - 如何授予用户访问 SQL Server 中的所有 View 但不能访问表和存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47664224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com