2013-01-14 187 views
7

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

私はこれができますので、私はそれが私が逃したものだと確信していますが、誰もがこれについて私は非常に感謝したいと思います。

どうもありがとう

+1

sqlcmdの使用は妥当と思われます。なぜあなたはそれに失敗したのですか? –

+0

参考になります:http://stackoverflow.com/questions/3794897/need-help-to-write-bat-file-that-execute-sql-scripts-in-sql-server-2008-and-ano – sgeddes

+0

SQLCMDを実行する.batファイルが機能していませんか?詳細を教えてください。 – Mark

答えて

9

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

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

以下のような単純なSQLコマンドを使用して開始: ""

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

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

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

+0

いいえSQLサーバーがあるマシンにリモートで接続しましたが、これをローカルに実行しようとしていません。 私はあなたの提案を試みますが、バッチファイルに関して - どのようにそのファイルが見えるでしょうか? – richardterris

+1

SQLExpressは、デフォルトでリモート接続を拒否するように構成されています。マシンからそのリモートSQLExpressに接続できますか?あなたは、はい、私はそう、私はまだ-Eパラメータを無視してお勧めしますし、-Sでサーバーを指定するには、-Uでユーザー名とパスワードを指定して、自分のマシン –

+0

のための管理Studioで試すことができます - Pである。まずスケジューリングを忘れ、コマンドラインからコマンドを実行できることを確認してください。 – richardterris

-1

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

SQLによって認識されないタスクスケジューラから実行されたときに、Windows認証のコンテキストに関する疑いがあります。

関連する問題