2012-03-07 14 views
11

エンティティモデルから生成され、正しい順序で実行する必要のあるいくつかのSQLスクリプトがあります。いくつかのテストスクリプトがあり、いくつかのテストスクリプトがデータベースに挿入されています。sqlファイルにsqlファイルを含めるには? MS SQL

は今、私は正しい順序でVisual Studioでこれらのスクリプトのすべてのを開き、

Master.sqlのようなものを作成する方法はありますし、私が使用したいの内部でSQL(CTRLシフトE)を実行]をクリックする必要がありますいくつか含まれています。次のようなものがあります:

BEGIN TRANSACTION 

ImportOrInclude myDB1.sql 
ImportOrInclude myDB2.sql 
... 

COMMIT 

これはビジュアルスタジオから実行する必要がありますが、これはアプリケーション自体の一部ではありません。

どうすればよいですか?

編集

がSQLファイルをインポートすることができSQLCMDスクリプトと呼ばれるもの http://msdn.microsoft.com/en-us/library/aa833281%28v=vs.80%29.aspx

があるしかし、私の質問はに現在のソリューションのディレクトリパスを取得する方法を、次にであることを、私を見つけました: Rコマンド

EDIT 2

私はそれを行う方法を見つけました。完璧ではなく、働いていました。 $(SolutionDir)がVS変数から読み込まれないため、手動で設定する必要があります。

-- turn on in menu: Data -> Transact SQL editor -> SQL CMD mode 
-- set this to path where the .sln file is. 
:setvar SolutionDir C:\_work\projectname\ 

:!! echo $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql 
:r $(SolutionDir)Maa.EntityModel.All\DbWEntityModel.edmx.sql 
go 

:!! echo $(SolutionDir)Maa.EntityModel.All\DblQEntityModel.edmx.sql 
:r $(SolutionDir)Maa.EntityModel.All\DbQEntityModel.edmx.sql 
go 

答えて

14

Use sqlcmd utility: このコードは、Visual Studioで実行することを意味しています。あなたは面白いかもしれません

エキス:

-i input_file[,input_file2...] 

は、SQLステートメントまたはストアドプロシージャのバッチを含むファイルを識別します。複数のファイルを指定して、順番に読み込んで処理することができます。ファイル名の間にスペースを入れないでください。 sqlcmdは、最初に指定されたすべてのファイルが存在するかどうかを確認します。 1つ以上のファイルが存在しない場合、sqlcmdは終了します。

例:

sqlcmd -dDataBaseName -E -Stcp:ServerName\instancename -imaster.sql 

Master.Sql:

:r file1.sql 
:r file2.sql 
+0

ありがとうございますが、-iは動作しません。のみ:r –

+0

確かに、私はそれをテストした。 –

+0

Visual Studioに含まれているsqlコマンドを使用しようとしましたが、別の方法で動作します –

0

使用これを行うために、SQL Serverが付属していますBusiness Intelligence Development Studio。新しいSSISパッケージを作成します。このパッケージの中で、あなたが持っている各ファイルのコントロールフローにいくつかのExecute SQL Tasksを作成し、SQLSourceTypeFileConnectionに設定してファイルを選択してください。

関連する問題