我不是DBA,因此对sql 2005安全设置等一无所知.我试图通过从sql Management Studio生成的脚本生成完整数据库来设置数据库的空副本.不幸的是,我不知道有多少选项可以做,而且这个过程的MSFT文档也不是很好.
可以选择为模式,表,视图和用户生成脚本.我很困惑的是用户,因为我不明白它们如何影响数据库的使用.我们团队中有一些开发人员在这个列表中,有些人不在,但是每个人都可以在数据库上做任何事情,至少当他们在自己的机器上托管它时.
我是否需要将这些用户保留在我新生成的数据库中,他们做了什么?
我们还有一个dbo用户,他是db_owner并拥有我们的许多模式.这个dbo用户是什么?拥有架构的用户有什么意义?我们使用Schemas作为“命名空间”来对我们数据库中的逻辑相关表进行分组,但我认为它们比那些更多吗?
还有一个用户名绑定到这个dbo用户,它是我们其中一个开发人员的Windows NT登录名,但他在列表中没有自己的User对象……这有什么意义吗?这是坏事吗?
其他用户是来宾,INFORMATION_SCHEMA和sys,但我认为这些都是默认值?
对不起,我是一个sql管理员无知,通常在我以前的工作中将这些东西留给DBA!
谢谢你的帮助.
解决方法
要设置数据库的克隆,通常需要复制用户. sql Server中的用户允许您分配权限;例如,可能有一个应用程序使用您的数据库,该数据库有权读取和修改数据,但不能创建或删除表.
您提到的具有不受限制访问权限的开发人员可能正在从Administrators组中的Windows帐户访问sql Server.默认情况下,sql Server中的这个映射到sysadmin服务器角色,这是一个具有高权限的角色.
dbo,guest,sys和INFORMATION_SCHEMA都是默认帐户.我不会太担心他们.
您的问题的答案都归结为 – 这些功能用于控制数据库中的权限.您希望为用户提供必要的最少权限,以便他们不会弄乱他们不需要的内容.在这种最简单的情况下,这意味着开发人员可以完全访问开发数据库,并且需要连接的每个系统或最终用户只需拥有所需权限即可获得帐户.