2008でバッチファイルからバックアップする方法

このQ&Aのポイント
  • SQL Server 2008 Expressで、バッチファイルを使用してDBのバックアップを取る方法について教えてください。
  • 2005と同様にバッチファイルを作成してバックアップを行っていますが、SQL Server 2008ではバックアップファイルが出力されません。
  • 解決策をご存知の方はいらっしゃいますか?
回答を見る
  • ベストアンサー

2008でバッチファイルからバックアップするには?

お世話になっております。 SQL Server 2008 Expressで、DBのバックアップを定期的に取ろうとしているのですが、うまくいきません。 SQL Serverのタスク等ではなく、バッチファイルを作成し、 タイムスタンプを付けて保存したいと思っています。 例:「TESTDB_YYYYMMDD_HHMMSS.bak」 2005のときは、以下のファイルを用意し、 Backup.bat Backup.sql ---- Backup.bat 内容 ------------------------ sqlcmd -SMYPC\SQLEXPRESS -Usa -iC:\DBBackup\DBBackup.sql -P"" >> C:\DBBackup\backup.log (タイムスタンプを付ける処理) ---- Backup.sql 内容 ------------------------ BACKUP DATABASE [TESTDB] TO DISK = N'C:\DBBackup\TESTDB.bak' WITH NOFORMAT, NOINIT, NAME = N'TESTDB-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO 同様の処理を2008上で行うと、特にエラーメッセージも出ないのですが、 バックアップファイルが出力されません。 (Management Studio Express上でSQLを流すとバックアップファイルが出力されます。) SQLCMDの仕様が変わった為かと思いますが、 解決策をご存知の方いらっしゃいましたら、宜しくお願い致します。

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

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

公式のドキュメントはみつけられませんでしたが、sqlcmdがブランクパスワードを受け付けなくなったのは確かのようです。 (osqlは引き続きOKですが) saアカウントですし、パスワードを設定するのが近道でしょう。

sarutako
質問者

お礼

jamshid6様、ご回答有難うございました。 ずばり、パスワードを設定する事で解決致しました。 ・・・それにしても、ブランクパスワードを受け付けないのならメッセージくらい表示して欲しいですよね。。

関連するQ&A

  • sqlserverを外付けHDDにバックアップ

    USBで接続した外付けHDDを Eドライブ として認識させ共有に設定した場合、Sqlserverの BACKUP DATABASE で直接バックアップできますか? 【環境】 win7 sqlserver2008R2 ネットワーク越しのバックアップはNGと認識はあるのですが、USB接続の場合は可能かどうか教えてください。 BACKUP DATABASE [TESTDB] TO DISK = N'E:\testdb.bak' WITH NOFORMAT, NOINIT, NAME = N'バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10

  • バッチファイルでファイル削除ができない

    こんにちは。バッチファイルについてご質問です。 OSはWindows2003 Serverです。SQL Server2008を使用しております。 SQLエージェントを使用して、以下フォルダに、YYYYMMDDhhmmss.bakというタイトルをつけて、デイリーでバックアップを取っております。 C:\backup\log\ 日々ファイルが増えていくので、最新のファイル5個だけ残したいと思い、 以下のバッチファイルを作成しましたが、"20110111130339.bak"が見つかりませんでした。 というエラーが表示されて、ファイルが削除できません。 フォルダ内には、同タイトルのファイルがあります。 for /f "skip=2" %F in ('dir /b /o-n C:\dbbackup\log\??????????????.bak') do del %F よろしくお願いいたします。

  • sqlserverのバックアップを定期的に取りたいと考えています。

    sqlserverのバックアップを定期的に取りたいと考えています。 バージョンは2005です。 やり方は下記のページを見つけました。 http://okwave.jp/qa/q4798230.html 上記のスクリプトファイルなのですが、固定の名前ではなく日付をつけくわえたbakファイルを作りたいと考えています。 例 testdb_2010xxxx.bak しかし、下記のようなスクリプトを書いてもうまく動きませんでした。 backup database testdb to disk = N'c:\Backup\testdb_'+DATEPART(yyyy, GETDATE())+DATEPART(m, GETDATE())+DATEPART(d, GETDATE())+'.bak' 文字列の連結のやり方がおかしいのだと思いますが、どこが間違っているのでしょうか。

  • バックアップの成功/失敗

    ASP上からデータベースのバックアップを行うページを作成しています。 データベースエンジンは、SQLサーバー7.0/2000です。 バックアップは、以下のような手順で行います。 Dim db Set db = Server.CreateObject("ADODB.Connection") db.Open DB_CONNECTION_STRING db.Execute("BACKUP DATABASE [TEST] TO DISK = N'E:\全体.BAK' WITH INIT , NOUNLOAD , NAME = N'TEST バックアップ', SKIP , STATS = 10, NOFORMAT") バックアップ自体はできるのですが、db.Execute() は、バックアップの終了を待たずして、戻ってきてしまいます。バックアップ開始後、バックアップの処理中・終了・成功・失敗などのステータスを確認したいのですが、どうすれば取得できるのでしょうか? よろしくお願いいたします。

  • FTPコマンドでサーバのファイルをget後変更する

    BATファイルで、FTPコマンドを実行するコーティングで、サーバのファイルをgetした後でファイル名を ファイル名_hhmmss (hhmmss:タイムスタンプ 時:分:秒)に変更するには、どのようなコーティングをすればいいのか教えてください。よろしくお願いします。

  • ネットワーク指定のバックアップ方法について

    SQL Server2000おいてバックアップをジョブに登録し定期的に取ろうと思っています。 ジョブにBACKUP DATABASE [ABCD] TO DISK = N'\\LANDISK\SHARE\BACKUP\BackData' WITH NOINIT , NOUNLOAD , NAME = N'Data バックアップ', NOSKIP , STATS = 10, NOFORMAT として"LANDISK"というネットワーク上にバックアップしようとしています。 しかし、バックアップ デバイス '\\LANDISK\SHARE\BACKUP\BackData' を開けません。デバイス エラーまたはデバイスがオフラインです。詳細については、SQL Server のエラー ログを参照してください。 というエラーとなってしまいます。 ログを見ても BackupDiskFile::CreateMedia: バックアップ デバイス '\\LANDISK\SHARE\BACKUP\BackData' を create にできませんでした。オペレーティング システム エラー = 5(アクセスが拒否されました。)。 となっております。 どなたか良い方法を分かりやすく教えていただけないでしょうか?

  • ログファイルの圧縮がされずに容量が日々増加してしまっています。

    ログファイルの圧縮がされずに容量が日々増加してしまっています。 SQLServer2008のジョブで定期的に以下の3ステップを行っています。 SHRINKFILEで毎回、圧縮できないでいます。 何が原因でしょうか。どのように解決したら良いかわからず投稿させていただきました。 【ステップ1 コマンド】 BACKUP DATABASE [TEST_DB] TO DISK = N'F:\TEST_DBバックアップ\TEST_DBバックアップ.bak' WITH FORMAT, NAME = N'TEST_DB-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10 【ステップ1 ログ】 BACKUP DATABASE により 22350897 ページが 1706.690 秒間で正常に処理されました 【ステップ2 コマンド】 BACKUP LOG TEST_DB TO DISK = N'F:\TEST_DBバックアップ\TEST_DB_LOGバックアップ.bak' 【ステップ2 ログ】  BACKUP LOG により 473562 ページが 55.721 秒間で正常に処理されました 【ステップ3 コマンド】  DBCC SHRINKFILE(TEST_DB_Log,1024) 【ステップ3 ログ】 圧縮できません。ファイルの末尾にある論理ログ ファイルが使用中です。 稿させていただきました。

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

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

  • SQLServerのバックアップ

    先日、バックアップが戻せないと質問させていただいたものです。 今回新たにデータベースを作って、試しにバックアップをやってみたのですが、何故か*.bakと*.trnのファイルが出来ません。その代り、拡張子無しのデータベース名ファイルが一つ出来ております。 手順は、オブジェクトエクスプローラーで当該データベースを右クリックして、「タスク」→「バックアップ」を選び、完全バックアップ、デフォルトのBackUpディレクトリの指定を削除して、デバイス→USBメモリのファイル名指定(新規)、有効期限0日、にて行いました。 何かを決定的に理解していないのだと思いますが、分かりません。 なぜ、うまくいかないのか、お教えいただけないでしょうか? ひょっとして、EXPRESSではダメという事があるのでしょうか?

  • バッチファイルの作成について教えてください

    あるファイルを2時間おきにバックアップしたいのですが、それをDOSのバッチファイルを作ってそれで作業したいと考えています。記述の仕方を教えてください。 ちなみに月曜日から金曜日までは以下のように記述しています。 at 5:00 / intractive /every:m,t,w.th,f "c:\backup.bat"