1

最初に少し紹介します。

SQL Server Express 2008データベースがあります。このスキーマは、スクリプトの形式でソースコントロールに保持されます。元々は、Management Studioでデータベースのコンテキストメニューを開き、[タスク]、[スクリプトの生成...]の順に選択して作成されます。

各開発者にはローカルのSQLServerExpress 2008データベースがあり、CIサーバーによって使用される中央のSQLServer2008データベースが1つあります。開発者がローカルデータベースのスキーマを変更するたびに、スクリプトを再生成し、ソースコードとともにコミットして、CIサーバーが使用する中央データベースのスキーマを更新します。

場合によっては、変更が膨大で、データベース全体を削除し、スクリプトを使用してデータベースを最初から作成する方が簡単な場合があります。これは非常に簡単です。

しかし、1つの問題があります。スクリプトは適切なデータベースユーザー(たとえばServerUserdb_owner )を作成しますが、そのユーザーにアプリケーションに必要なロールメンバーシップを付与しません。開発者は、Management StudioのServerUserユーザーでプロパティダイアログを開き、データベースロールメンバーシップリストのdb_ownerチェックボックスをオンにすることを忘れないでください。言うまでもなく、私たちはこのステップを頻繁に忘れます。私自身、サーバーが起動しない理由を理解しようとして、約1時間無駄になりました。

[master].[sys].[database_role_members]ややナイーブな人間なので、単純なsql insertステートメントでカタログを操作して、スクリプト実行の一部として必要なロールメンバーシップを自動的に追加できると思いました。もちろん、それはエラーメッセージで失敗しました。システムカタログへのアドホックアップデートは許可されていません。。愚かな私。

とにかく、私の質問はこれです。データベースと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 に答える