我有一个脚本,它为给定的{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}]
有没有办法限制用户从存储过程中查看其他数据库?
存储过程当前在另一个数据库上,但我可以移动它。
答案 0 :(得分:0)
您可以通过执行以下操作来更改给定SQL命令的数据库上下文:
master.dbo.sp_executesql N'print db_name()'
虽然我怀疑可能有更好的方法来做你想做的事情