SQL Server“拒绝查看存储过程中的任何数据库”

时间:2013-04-04 15:10:37

标签: sql-server stored-procedures

我有一个脚本,它为给定的{databaseName}生成数据库,然后为该数据库创建给定{loginName}的登录。

然后,我希望限制此用户只能查看此数据库,而不能查看其他用户。

我通过以下方式使用:

USE [{DatabaseName}]
GO
ALTER AUTHORIZATION ON DATABASE::[{DatabaseName}] to [{LoginName}]
GO
USE [master]
GO
DENY VIEW ANY DATABASE TO [{LoginName}]
GO

我现在把它放到存储过程中,但我无法更改为[master]数据库来执行最后一行:

DENY VIEW ANY DATABASE TO [{LoginName}]

有没有办法限制用户从存储过程中查看其他数据库?

存储过程当前在另一个数据库上,但我可以移动它。

1 个答案:

答案 0 :(得分:0)

您可以通过执行以下操作来更改给定SQL命令的数据库上下文:

master.dbo.sp_executesql N'print db_name()'

虽然我怀疑可能有更好的方法来做你想做的事情