131

他の開発者が SQL Server 2005 データベースに加えた変更を適用するために実行しなければならない .sql ファイルがいくつかあります。ファイルは、次のパターンに従って名前が付けられます。

0001 - abc.sql
0002 - abcef.sql
0003 - abc.sql
...

それらすべてを一度に実行する方法はありますか?

4

14 に答える 14

163

次のコマンドで .BAT ファイルを作成します。

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause

ユーザー名とパスワードを提供する必要がある場合

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -U username -P 
password -i"%%G"

ユーザー/パスワードが提供されている場合、「-E」は必要ないことに注意してください

この .BAT ファイルを .SQL ファイルを実行したいディレクトリに置き、.BAT ファイルをダブルクリックすれば完了です!

于 2011-06-28T09:24:43.800 に答える
72

FORを使用します。コマンドプロンプトから:

c:\>for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
于 2010-04-06T17:27:35.230 に答える
24

管理スタジオで [クエリ] > [SQLCMD モード] オプションをクリックして、SQLCMD が有効になっていることを確認します。

  1. フォルダに4 つの .sql ファイル ( script1.sql,script2.sql,script3.sql,script4.sql) があるとしますc:\scripts

  2. 次の内容でメイン スクリプト ファイル (Main.sql) を作成します。

    :r c:\Scripts\script1.sql
    :r c:\Scripts\script2.sql
    :r c:\Scripts\script3.sql
    :r c:\Scripts\script4.sql
    

    Main.sql を c:\scripts 自体に保存します。

  3. ExecuteScripts.bat次の名前のバッチ ファイルを作成します。

    SQLCMD -E -d<YourDatabaseName> -ic:\Scripts\Main.sql
    PAUSE
    

    <YourDatabaseName>スクリプトを実行するデータベースに置き換えることを忘れないでください。たとえば、データベースが「Employee」の場合、コマンドは次のようになります。

    SQLCMD -E -dEmployee -ic:\Scripts\Main.sql
    PAUSE
    
  4. バッチファイルをダブルクリックして実行します。

于 2010-04-06T10:14:14.530 に答える
8

一般的なクエリ

以下の行をbatch.batという名前でメモ帳に保存し 、すべてのスクリプトファイルがあるフォルダー内に配置します

 for %%G in (*.sql) do sqlcmd /S servername /d databasename  -i"%%G"
    pause

for %%G in (*.sql) do sqlcmd /S NFGDDD23432 /d EMPLYEEDB -i"%%G" 一時停止

ログインに失敗した場合は、以下のコードとユーザー名パスワードを使用してください

for %%G in (*.sql) do sqlcmd /S SERVERNAME /d DBNAME -U USERNAME -P PASSWORD -i"%%G"
pause

for %%G in (*.sql) do sqlcmd /S NE8148server /d EMPLYEEDB -U Scott -P tiger -i"%%G" 一時停止

スクリプトファイルがあるフォルダー内にbatファイルを作成したら、batファイルをクリックするだけでスクリプトが実行されます

于 2016-06-16T08:16:34.493 に答える
5

多くの SQL ファイルをドラッグ アンド ドロップしてデータベースに対して実行できるようにするオープン ソース ユーティリティを C# で作成しました。

このユーティリティには次の機能があります。

  • ドラッグ アンド ドロップ スクリプト ファイル
  • スクリプト ファイルのディレクトリを実行する
  • 実行中のSQLスクリプト出力メッセージ
  • 緑と赤で色付けされた成功または失敗したスクリプト (実行中は黄色)
  • エラー時に停止オプション
  • エラー時にスクリプトを開くオプション
  • 各スクリプトの所要時間でレポートを実行
  • 合計所要時間
  • DB接続のテスト
  • 非同期
  • .Net 4 & SQL 2008 でテスト済み
  • 単一のexeファイル
  • いつでも接続を切断する
于 2012-03-07T04:30:53.550 に答える
3

私が知っていることは、osql または sqlcmd コマンドを使用して複数の sql ファイルを実行できることです。欠点は、両方のコマンドのスクリプトを作成する必要があることです。

SQLCMD を使用して複数の SQL Server スクリプトを実行する

OSQL (これは SQL Server 2000 用です)

http://msdn.microsoft.com/en-us/library/aa213087(v=SQL.80).aspx

于 2010-04-06T08:40:11.260 に答える
0

他のすべてを呼び出す単一のスクリプトを作成できます。

以下をバッチファイルに入れます。

@echo off
echo.>"%~dp0all.sql"
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

そのバッチ ファイルを実行するとall.sql、バッチ ファイルが置かれているディレクトリと同じ名前の新しいスクリプトが作成されます。.sqlバッチ ファイルが配置されているディレクトリと同じディレクトリで、拡張子を持つすべてのファイルが検索されます。

次に、を使用してすべてのスクリプトを実行できます(または、スクリプトの作成後sqlplus user/pwd @all.sqlに呼び出すようにバッチ ファイルを拡張します) 。sqlplusall.sql

于 2014-03-27T08:21:11.483 に答える