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