1

先做一点介绍。

我们有一个 SQL Server Express 2008 数据库,该架构以脚本的形式保存在源代码管理中,最初是通过在 Management Studio 中打开数据库上的上下文菜单并选择任务|生成脚本 ...创建的。

每个开发人员都有一个本地 SQL Server Express 2008 数据库,CI 服务器使用一个中央 SQL Server 2008 数据库。每当开发人员更改本地数据库的架构时,他都会重新生成脚本,将它们与源代码一起提交并更新 CI 服务器使用的中央数据库上的架构。

有时,更改是巨大的,简单地删除整个数据库并使用脚本从头开始创建它更容易,这真的很容易。

但是,有一个问题。尽管脚本确实创建了正确的数据库用户(比如ServerUser),但它们并没有授予该用户db_owner应用程序所需的角色成员资格。开发人员必须记住在 Management Studio中打开ServerUser用户的属性对话框,并选中数据库角色成员列表db_owner中的复选框。不用说,我们经常忘记这一步。我自己刚刚浪费了大约一个小时试图找出服务器无法启动的原因。

作为一个有点天真的人,我认为我可以[master].[sys].[database_role_members]使用简单的 sql insert 语句来操作目录,以自动添加必要的角色成员资格,作为脚本执行的一部分。当然,失败并显示错误消息Ad hoc updates to system catalogs are not allowed。. 愚蠢的我。

无论如何,我的问题是这个。我们是否可以在创建数据库和ServerUser时运行一个 SQL 脚本,这将使该用户具有db_owner新数据库的角色成员资格?

谢谢。

4

1 回答 1

3

您可以使用 sp_addrolemember。

http://msdn.microsoft.com/en-us/library/ms187750.aspx

EXEC sp_addrolemember 'db_owner', 'username'
于 2009-12-17T12:35:43.487 回答