12

SSDT (SQL Server Data Tools) がインストールされた SQL Server 2012 と VS 2010 を実行しています。私の開発用 DB では、ストアド プロシージャ、関数、CLR オブジェクトなどを使用しています。約 500 GB の製品データのスナップショットがあります。

SQL Server データベース プロジェクトを作成し、データベースをインポートしました。これにより、すべてのテーブル、ビュー、procs、および関数ファイルがスキーマ名で作成されました。すばらしいことです。他の VS プロジェクトと同じようにバージョン管理を行ったり、デプロイを作成したりできます。これまでのところ、とても良いです。

しかし、SQL Server Database Project の下でプロシージャ/テーブルを変更/追加するための開発プロセスがどうあるべきかについて混乱しています。私が行った変更は、開発データベースではなく、一部の LocalDb/Projects データベースに適用されているようです。

その LocalDb ですべてのオブジェクトを作成してから、発行を介してビルドして開発データベースにデプロイすることを想定していますか? パブリッシュ プロセスがテーブルを削除して再作成すると、製品データのスナップショットが失われるため、dev DB 内の既存のテーブルが心配です。

SQL Server データベース プロジェクトで従うべき適切な開発プロセスは何ですか?

4

2 に答える 2

6

ソース データベース (あなたの場合はデータベース プロジェクト) は、展開後の "あるべき" 状態であると考えてください。展開が開始されると、実行可能ファイル (SqlPackage.exe) はソースとターゲットを比較し、差分/デルタ スクリプトを生成して、ターゲットをソースのように見せます。CREATEこれが、 orを指定する必要がなくなった理由ALTERです。ツールはそれを理解します。進行中の開発についての質問に答えるには、どちらの方法でも開発できます。プロジェクト ファイルで開発し、共通の開発データベースに公開することも (たとえば、チームに所属している場合)、SQL Server Management Studio (SSMS) などのツールを使用してデータベースで開発し、プロジェクト ファイルと同期することもできます。スキーマ比較を使用します(SSMSが好きなので、後者の手法を使用します)。

展開するには、展開を実行するマシンに SSDT をインストールする必要があります (SSDT は SQL Server 2012 以降に同梱されています。SQL Server 2008 については知りません)。スクリプトを作成して、展開を簡素化できます。基本的に、SqlPackage.exe (x:\Program Files (x86)\Microsoft SQL Server\nnn\DAC\bin にあります) をアクションとソースと共に呼び出します。ほとんどのコマンド プロパティを処理するために、パブリッシュ プロファイルも使用します。したがって、デプロイの例は次のようになります。

SqlPackage.exe /Action:Publish /SourceFile:MyDatabase.dacpac /Profile:MyProfile.publish.xml

詳細については、SQL Server データ ツールのドキュメント http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspxを参照してください。

SqlPackage.exe ドキュメント http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx

于 2014-10-06T19:52:13.873 に答える
4
  1. VS DB プロジェクト内で変更を行います。

  2. 変更を localDB にデプロイしてテストする

  3. データベースを本番サーバーに公開します。私はこれを手動で行うためにスキーマ比較を使用することを好みますが、右クリック --> 発行メニュー (発行プロファイルも作成されます) またはコマンド ライン引数を使用してプロジェクトを発行することもできます。パブリッシュ プロセスでは、テーブルを削除して作成することはありません (データベース全体を削除して再作成するように指示しない限り)。

または、プロジェクト設定で、接続文字列を変更して本番サーバーを指すようにすることもできます (コメントで指摘されているように)。ただし、ローカル ビルド (F5) を実行するたびに運用サーバーに公開しようとするため、これはお勧めしません。

于 2012-12-18T16:20:22.127 に答える