3

単一のデプロイ スクリプトで本番または開発 SQL サーバーにデプロイできるスムーズなデプロイ プロセスを設定しようとしています。

しかし、2 つの環境間でユーザーとアクセス許可を管理する最善の方法がわかりません。たとえば、開発では、開発者グループにdb_ownerデータベース ロールを持たせたいと考えています。本番環境では、アクセス権がないか、datareader役割だけが必要です。

これを行う最も簡単な方法は、各サーバーで一度ユーザーを設定し、データベース プロジェクトに保持しないことだと思います。しかし、その後、展開中にドロップされます。

Visual Studio でプロジェクト構成を使用してこれを行う方法はありますか?

完全な Microsoft スタックを使用しています

  • Visual Studio 2010 データベース プロジェクト
  • SQL Server 2008
  • TFS バージョン管理とビルド サーバー
  • vsdbcmd展開用
4

1 に答える 1

3

いくつかのことがこれを簡単にします:

  1. ロールが持つ必要があるアクセス許可を含む意味のあるロール名をデータベースに作成します。たとえば、「開発」や「生産サポート」などです。これらのロールとユーザーにのみアクセス許可をロールに割り当てます
  2. プロジェクトでは、さまざまな環境に対してさまざまな展開構成があると思われます。構成ごとに異なる sqlcmdvars ファイルを使用できるため、環境に合わせて SQLCMD 変数を作成し、それに適切な値を入力します (たとえば、開発の場合は "DEV"、運用の場合は "PROD")。
  3. SQLCMD 変数の値に基づいて、適切な環境で適切な処理を行う配置後スクリプトを作成します。何かのようなもの:

--

if ('$(Environment)' = 'DEV')
begin
   create user [domain\developers]
   exec sp_addrolemember @rolename='db_owner', @membername='domain\developers'
end
于 2012-07-11T19:06:36.430 に答える