0

我有一个脚本,它为给定的 {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}]

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

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

4

1 回答 1

0

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

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

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

于 2013-04-04T15:35:24.533 回答