1

Windowsファイルから複数のSQLCMDステートメント (SQL Server 2008 でテーブルをアーカイブし、復元スクリプトを作成する)を実行しようとしています。.bat私のスクリプトは、最初に SQL 認証を実行し、次に SQL スクリプトを入力して復元ファイルを出力するように機能します。

sqlcmd -S <Server name>\<instance> -U user
sqlcmd -i ArchiveTable1.sql -o RestoreTable1.sql
sqlcmd -i ArchiveTable2.sql -o RestoreTable2.sql
sqlcmd -i ArchiveTable3.sql -o RestoreTable3.sql

問題は、sqlcmd 認証の後、プロンプト 1> が表示され、次のステートメントが実行されないことです。Quit に入ると、次のステートメントが実行されますが、出力ファイルに認証無効エラーが表示されます。各sqlcmdステートメントでSQL認証を行いたくありません。

私のアプローチに問題がある場合は、誰かが他のデザインを使用するように案内してくれますか?

4

1 に答える 1

1

3 回の sqlcmd 実行、3 回の認証:

sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable1.sql -o RestoreTable1.sql
sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable2.sql -o RestoreTable2.sql
sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable3.sql -o RestoreTable3.sql

各 sqlcmd ステートメントで sql 認証を行いたくない

あなたが望むものはほとんど重要ではありません。正しいことをしなければなりません。異常な要件に正当な理由がある場合は、問題を明確に述べ、解決策を提供せず、それを機能させるように依頼してください。

ユーザー情報とパスワードをバッチで繰り返すのを避けたい場合、さらに重要なことに、これらのパスワードをバッチで放置したままにしておくのを避けたい場合は、sqlcmd 環境変数SQLCMDUSERと をSQLCMDPASSWORD使用します。

SQLCMDPASSWORD環境変数を使用すると、現在のセッションのデフォルト パスワードを設定できます。したがって、パスワードをバッチ ファイルにハードコードする必要はありません。

SQLCMDUSER, SQLCMDPASSWORD(およびおそらく) を設定してからSQLCMDSERVER、バッチを呼び出します。この方法では、バッチにハードコードされたパスワードを含める必要はありません。

于 2012-11-20T12:23:35.557 に答える