回答:
使用している場合はSQLCMDを、あなたは使用することができます:r FileName
別の.sqlファイルを含めること。
:r FileName
FileNameで指定されたファイルからステートメントキャッシュに追加のT-SQLステートメントとSQLCMDコマンドを解析します。FileNameは、Visual Studioのスタートアップディレクトリに関連して読み取られます。ファイルは、バッチターミネータが検出された後に読み取られて実行されます。複数の:rコマンドを発行できます。このファイルには、[ツール]、[オプション]で定義されているバッチターミネーターを含む、SQLCMDコマンドを含めることができます。展開前または展開後のスクリプトで:rを使用して、他のスクリプトを含めることができます。
古代のCプリプロセッサの意味では間違いなく
絶対パスを指定した一連のファイルを無条件の順序で含める場合は、コマンドラインツールsqlcmdを使用するか、@ mfredricksonおよび@Marianで言及されているsqlcmdmodeでSSMSを使用できます。
ただし、相対パスまたは条件付きインクルードが必要な場合は、sqlcmd(または非推奨の先行バージョンであるisqlまたはosqlのいずれか)を呼び出すラッパーを使用する必要があります。
現在、この状況での私の仕事では、古いvbsとhtaコードを確認して拡張しています。私は完全に幸せではありませんが、実際的な決定です。動作しており、エンドユーザーはhta GUIを使用して自宅にいるため、追加のソフトウェアをインストールする必要はありません。
新鮮なデザインのために、WPFとPowerShellを使用してsqlcmdの呼び出しをラップすることを考え始めましたが、現在の顧客では、PowerShell V2の存在を推測することはできません。
以前にも、この目的のために単純なcmdバッチを作成しましたが、そのうちのいくつかはまだ使用中です。
現在のツール、特にワークフローを対象とするツールがあり、ここで適していると思います。私はそれらに精通していません。
Management StudioのSQLCMDモードと共に、バッチファイルを使用してマスターファイルとして使用し、SQLCMDユーティリティを使用してすべてのsqlファイルを配置および呼び出すこともできます。
SQLCMDモードは、Management Studio内のユーティリティ使用のシミュレーションであるため、モード間に大きな違いはありません。いつかバッチを実行することを好みます(M Studioを開く必要はありません...正しいデータベースをロードする...など)。出力ファイルを含め、バッチ内のすべてを構成することを好みます。
T-SQLプリプロセッサが非常に必要です。私はC#で独自のものを開発しましたが、1時間ほどかかりました。SQLスクリプトの実行順序を制御することに加えて、スカラーUDFのように見えるマクロを使用するのに便利ですが、インラインUDFと同じくらい高速に実行できます。
bernd_kの答えが好きです。SQL Server 2008以降を実行している場合は、番号を含めるなど、スクリプトの命名方法に応じて、SQL Server PowerShell(SQLPS)を使用できます。その後、SQL 2005を使用している場合でも、PowerShellと2005のSMOを利用できます。
サイドノート:私は、SQLCMDは最終的に減価償却リストに入れられ、SQLPS、PowerShellに置き換えられると信じています。
他にもいくつかのオプションがあります。
SQLCMD
してDACPACを管理することを示す現在のドキュメントを見つけた場合、私が見つけることのほとんどはPowerShellを参照しているためです。またsqlcmd
、スキーマの比較を除き、SSDTで使用される参照は表示されませんが、生成されたスクリプトは使用しません。