16

Windowsタスクスケジューラで1時間ごとにストアドプロシージャを実行するようにスケジュールを設定しようとしていますが(SQL Expressを使用していて、サードパーティのツールをインストールできないため)、.batファイルの実行などのさまざまな方法を試した後タスクスケジューラから、タスクスケジューラからSqlCmdユーティリティを開き、コマンドライン構文または.sqlスクリプトファイルのいずれかを渡すと、うまくいきません。

私はこれができることを知っているので、それは私が見逃したことだと確信していますが、誰かがこれの経験を共有することができれば、私はそれを非常に感謝します。

次のコマンドはバッチファイルにあります...

sqlcmd -E -i"C:\Users\Administrator\Desktop\test.sql" -o"C:\Users\Administrator\Desktop\dump.txt"

どうもありがとう

4

2 に答える 2

17

SQLインスタンスの管理者である場合(SQLExpressを使用しているので、自分のコンピューターでこれを実行しようとしているので、ユーザーがSQLインスタンスの管理者である可能性が高いと思います)-Eを使用しないでください。すべて、無視してください。

次に、ローカルで作業している場合でもサーバーを指定します。

以下のような単純なSQLコマンドから始めます。

sqlcmd.exe-S"。" -d MY_DATABASE -Q "SELECT * FROM MY_TABLE"

MY_DATABASEとMY_TABLEをdbnameとテーブル名に置き換えます。コマンドラインから実行できることを確認してください。テーブルからデータを返す必要があります。(コマンドラインオプションでは大文字と小文字が区別されるため、-sは-Sと同じではないことに注意してください)

最後に、タスクスケジューラを介してパラメータをフィードしようとしないでください。すべてのパラメーターを含むコマンドを.batファイルに入れ、タスクスケジューラからバッチを実行するだけです。

于 2013-01-14T15:36:19.327 に答える
0

私は最近同様の問題を抱えており、私の経験があなたを助けるかもしれません。バッチファイルから小さなアプリ、つまりEXEを呼び出していました。Windowsタスクスケジューラから実行するバッチファイルをスケジュールしていました。アプリはWindows認証を使用してSQLデータにアクセスしていました。アプリを直接実行することもできます。つまり、EXEをクリックして実行します。バッチファイルからアプリを実行できました。しかし、スケジュールされたタスクを実行しようとすると、開始されたように見えましたが、何も実行せず、検出できるエラーも投稿されませんでした。SQL認証で実行するようにアプリを変更した場合、タスクスケジューラから実行できることがわかりました。

SQLで認識されないタスクスケジューラから実行された場合のWindows認証のコンテキストに何かがあるのではないかと思います。

于 2014-01-13T06:52:44.150 に答える