• ベストアンサー

sqlcmdの自動実行方法について

sqlcmdから指定の時間に、sqlを実行したいのですが、方法がわかりません。 プロンプトを立ち上げて、 sqlcmd !!sqlcmd -E -d db -i c:\a.sql -o c:\1.txt の実行で、読み込んだsqlが1.txtに出力される事までは、確認できています。 申しわけありませんが、ご存知の方ご教示宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

sqlcmd自体に指定時間を実行する機能があるとまでは思っておられないですよね。 したがって、基本的には ・SQL Serverエージェントタスクを登録する ・Windowsのタスクスケジューラに登録する のどちらかしかないです。 (おそらく後者でしょうね) バッチファイルに sqlcmd -E -d db -i c:\a.sql -o c:\1.txt を貼って保存し、タスクスケジューラに登録するだけです。 -Eオプションを使っておられるので、タスクにはSQL Serverに接続できるユーザのIDとパスワードを指定する必要があります。 もし全く違う質問なのであれば、環境情報などももっと具体的に書かれるといいと思います。

yamachan_tomo
質問者

お礼

私が意図した回答です。有難う御座います。 日次行いたい処理があり、スケジューリング処理を探していました。 SQLServerエージェント?というのでも、できるのですね。 >>sqlcmd自体に指定時間を実行する機能があるとまでは思っておられないですよね。 当方、SQLServerについて、ご想像?されているよりも わかっていません。 頂いた助言のお陰で、希望の処理が実行できるようになり作業付加が軽減されました。【Windowsのタスク登録】 有難う御座います。

関連するQ&A

  • バッチからSQLCMDを実行する方法

    以下のようなコマンドをバッチファイル(.bat)に記載し、実行しています。(ローカルのsqlserverにwindows認証で入れる事は確認済みです。) !!sqlcmd -E -d database -i c:\sql\a.sql ですが、バッチを実行してもsqlcmdが動作せず、 「'!!sqlcmd'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」 というエラーが発生します。 バッチファイルから、sqlcmdの実行方法をご存知の方、申し訳ありませんがご教示お願いします。

  • SQLSERVER2005 sqlcmd 実行時のエラー

    「sqlcmd -S computerA\instanceB -U userC -P passD -i inputfileE -o outputfileF」 を実行した際にoutputfileFに以下のエラーメッセージが出力されていました。 「Sqlcmd: エラー: Microsoft sql native client: サーバー接続のオープン処理の遅延のため、ログイン プロセスを完了できませんでした。」 このコマンドは数ヶ月前から毎日行っているもので、今日始めて出力されました。 原因を調査しましたがわからなかったため、とりあえず同じコマンドを再実行したところ、今度は正常に動作しました。 本メッセージの出力原因を教えてください。 よろしくお願いします。

  • SqlServerのスクリプト実行について

    Windows2003ServerにてSqlServer2005をバッチファイルから実行する時について質問させてください。 下記の「sql.bat」にて「script.sql」を実行した場合、「log.txt」に出力される内容は'222'をアップデートした結果「(x行処理されました)」のみが出力されますが、'000'や'111'を更新した結果も出力させたい場合、「script.sql」を3分割し、「sql.bat」で3ファイル実行するしかないのでしょうか。 「sql.bat」 sqlcmd -S SERVERNAME -d SCHEMANAME -i c:\script.sql -o c:\log.txt 「script.sql」 update tablename set data1 = 'aaa' where data1 = '000' update tablename set data1 = 'bbb' where data1 = '111' update tablename set data1 = 'ccc' where data1 = '222'

  • sqlcmdの結果メッセージについて

    現在、仕事で複数のSQL Server2008 R2 がある環境で開発を行っているのですが、 何故か、sqlcmdを実行した際の結果メッセージ表示されないDBがあります。 (「(10件処理されました)」等のメッセージです。) メッセージの出るDBと出ないDBで、サーバーのプロパティやDBのプロパティを比較したりしたのですが、何が違うのかわかりませんでした・・・。 どなたか心当たりがある方はご教授願えませんでしょうか。

  • SQLServer sqlcmdが使えない

    * 困っています まだ大分初心者のひよこですが、 SQLServer2005をSQLCMDを使って操作しようと思っているのですが、 SQLServer2005をインストールしてコマンドプロンプトから操作しようとしても、 「'sqlcmd' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と出てしまいます。 PATH設定とか必要なのでしょうか? もしくは足りないソフトとかありますでしょうか? こんな質問で申し訳ありませんが、 宜しければ教えて下さい<(_ _;)> OS: Vista SQL SERVER 2005 Express Edition (SQLEXPR_JPN.EXE)

  • SQL Server 2008のsqlcmdコマンドでlocalhost以外で接続できない

    SQL Server2008のsqlcmdコマンドでデータベースに接続しようとするのですが、localhostアカウント以外接続ができません。 理由を教えてください。 【成功】 sqlcmd -S localhost -d tempdb -E -i create.sql 【失敗】 sqlcmd -S 1.1.1.1 -d tempdb -E -i create.sql 【エラー内容】 エラー: Microsoft SQL Server Native Client 10.0: 通信リンクが失敗しました。。 Sqlcmd: エラー: Microsoft SQL Server Native Client 10.0: SQL Server への接続の確立中に、ネットワーク関連のエラーまたはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできません。インスタンス名が正しいことと、SQL Server がリモート接続を許可するように構成されていることを確認してください。詳細については、SQL Server オンライン ブックを参照してください。。

  • sqlcmdのループ処理について

    バッチ(sqlcmd)のループ処理について質問です。 SQLやバッチについて最近学び始めた初心者です。 5つのSQLファイルを順番に実行して正常に動作するかループしながら確認をしたいのですが、その場合はfor文を使用すれば良いでしょうか? 調べてもループ回数とファイル指定を同時に行えなさそうだったので、方法を教えていただきたいです。よろしくおねがいします。

  • bat処理の実行結果ログ出力方法について

    Windows2003Serverで、bat処理でネットワーク共有したHDDにバックアップデータを移動する処理を組込しているのですが、実行される場合、されない場合があるため、実行結果をログ出力したいと思っています。 MV D:TEST.TXT Z:\TEST.TXT >>D:\LOG.TXT として出力しますと、エラーであっても、正常であっても何も出力されませんでした。 コマンドプロンプト上で返される結果(ファイルが存在しない場合、「指定されたファイルが見つかりません」の表示をする等)をログ出力する方法はないでしょうか? ご教授下さい。

  • windows batの一部分を繰り返し実行したい

    以下の部分を繰り返しbatで実行したいのですが、どうすればよいでしょうか? REM 取得したい行数-1を指定 FOR /F "tokens=1-9 skip=%LINE%" %%i in (dakoku_data.csv) DO ( SET B=%%i%%j%%k%%l%%m%%n%%o%%p%%q ECHO %%i%%j%%k%%l%%m%%n%%o%%p%%q>>insert.txt GOTO EXIT_FOR ) :EXIT_FOR ECHO %B% FOR /F "tokens=7-9 delims=," %%i in (insert.txt) DO set RR=%%i%%j if %RR%==000 FOR /F "tokens=1-3 delims=," %%i in (insert.txt) DO set C=20%%i-%%j-%%k if %RR%==000 FOR /F "tokens=4-5 delims=," %%l in (insert.txt) DO set D=%%l:%%m:00 if %RR%==000 FOR /F "tokens=6 delims=," %%i in (insert.txt) DO set E=%%i REM MySQL PATH set PATH="C:\Program Files\MySQL\MySQL Server 5.0\bin" REM CHARACTER ECHO set character set sjis;>__sql.sql REM if %RR%==000 ECHO INSERT INTO `XXX` VALUES ('%E%','2011-11-15 14:33:19', '%C%', '0', '%C%', '%D%', , '8',null, null, , '8', '1', '1', null, '', null);>>__sql.sql

  • サーバーと実行端末が違う場合のsqlcmdの書き方

    コマンドの実行端末にDBがある場合は成功するのですが、 サーバーが別の端末の場合ファイルが見つからないようです。 データファイルの書き方を変える必要があるのでしょうか? SQLServerは2008です。 SQLCMD -S"SRV\XXXXXX" -U"user" -P"pass" -d"DB1" -Q"INSERT INTO [テーブル名] SELECT CONVERT(datetime,年月),データ1,データ2,データ3,データ4 FROM OPENROWSET(BULK 'D:\test\bcptest\test.csv', FORMATFILE='D:\test\bcptest\test.fmt',FIRSTROW = 2) x"