设置仅对某些用户可见的SQL Server数据库

Nei*_*ell 7 database sql-server authorization

我正在为开发人员面试设置一台笔记本电脑,准备进行编码测试.我想为每个候选人创建一个数据库,但是在面试本身之前.我的准备是这样的:

  1. 以管理员身份登录.
  2. 为每个候选人创建一个本地Windows用户.
  3. 在SQL Server的本地默认实例上为每个候选项创建一个数据库(在数据库名称中使用它们的名称).

这样当我作为每个候选人登录到Windows时,如果他们打开SSMS,他们只能在对象资源管理器中看到自己的数据库.

我想这样做,因为在两次采访之间通常没有足够的时间来备份/分离前一个候选人的数据库并创建下一个候选人的数据库(机器很慢,所以再次注销等等需要时间).

这是可能的,如果是的话,怎么样?

提前谢谢了.

p.c*_*ell 5

看来SQL Server 2005+中有一个选项可以满足您的需求.听起来好像您的要求是用户在对象资源管理器中看不到其他数据库.

如何在SQL Server中隐藏数据库突出显示该VIEW ANY DATABASE权限.在需要向Windows用户X以外的所有用户隐藏数据库X的情况下,它可能很有用.

这个MSDN论坛帖子(参见最底层的帖子)表明,将视图数据库拒绝给用户并提供授权的组合是一种可能的解决方案.

我在SQL Server 2008计算机上复制了这个,但在此快速测试中使用了SQL Server身份验证.它的工作原理如下:所有数据库都从登录中隐藏,保存下面指定的数据库.

USE <customersdatabase>

ALTER AUTHORIZATION ON DATABASE::<customerdatabase> to <customerlogin>

USE MASTER

DENY VIEW ANY DATABASE TO <customerlogin>
Run Code Online (Sandbox Code Playgroud)