すべてのSQL Serverデータベースをバックアップするバッチスクリプト

SQL Serverデータベースをコマンドラインからバックアップする方法については既に説明しました。すべてのデータベースを一度にバックアップする場合はどうすればよいでしょうか?データベースごとにbackupコマンドを実行するバッチスクリプトを作成することもできますが、データベースを追加または削除するたびにこのスクリプトを更新する必要があります。さらに、データベースバックアップはすべて1つのファイルに追加され、新しいバックアップが実行されるたびにそのサイズだけ大きくなります。代わりに、真の「設定して忘れる」という方法で、バッチスクリプトを作成します。バッチスクリプトは、新しいデータベースが追加されたり削除されたりしてSQL Serverに適応します。

この時点までには、これはバックアップスクリプトです

@ECHO OFF; SETLOCAL

REMトークンのフォーマットをYYYY-MM-DD(ロケールは米国を想定)とし、FOR / F “tokens = 1,2,3,4 delims = /” %% A IN( ‘Date / T’)DO SET NowDate = %% D – %% B – %% C

REMバックアップするデータベースのリストを作成する; SET DBList =%SystemDrive%SQLDBList.txt; SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON、SELECT name FROM master.dbo.sysDatabases WHERE [Name] ( ‘master’、 ‘model’、 ‘msdb’、 ‘tempdb’) “>”%DBList% ”

REM各データベースをバックアップし、日付をファイル名の前に付加する; FOR / F “tokens = *” %% IN IN(%DBList%)DO; ECHOデータベースをバックアップする:%% I; SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%% I] TO Disk = ‘D:バックアップ%NowDate%_ %% I.bak’ “; ECHO。

REMテンポラリファイルをクリーンアップ; IF EXIST “%DBList%” DEL / F / Q “%DBList%”

ENDLOCAL

日付が2009年1月13日で、「MyDB」、「AnotherDB」、および「DB Name with Spaces」の3つのデータベースがある場合、スクリプトは指定されたバックアップ場所に3つのファイルを作成します

もちろん、スクリプトを自分の環境に合わせてカスタマイズしたいので、ここで行う必要があります

バッチスクリプトをカスタマイズしたら、管理者権限を持つユーザーとしてWindowsタスクスケジューラを使用して実行するようにスケジュールし、すべて設定します。

私はあなたのデータベースをバックアップするこの方法を使用すると、tempdbをクリアしないと確信しています。データベースをバックアップするためのMicrosoftの組み込みウィザードは、本当に必要なものです。あなたはそれが実行されるようにスケジューリングします。これはまた、あなたのtempdbがきれいになっていることを保証します。

素晴らしい

すべてのバックアップデータベースを新しいクリーンなSQL Serverインスタンスに復元するには、スクリプトも復元する必要があります。説明は以下の通りです

質問:すべてのデータ(.sql)を含むSQLスクリプトでSQL Server 2005のユーザーデータベースをバックアップし、SQL Server 2008上のすべてのデータベースのこのスクリプトを復元する方法

OR

このスクリプトによってバックアップされたすべてのデータベースを新しいクリーンなSQL Serverインスタンスに復元する方法(SQL Server 2005標準でバックアップし、SQL Server 2008 Webエディションに復元する方法)

誰かがSQLスクリプト(単一ファイル)にすべてのMS SQL Server 2005標準ユーザーデータベースをバックアップし、単一のバックアップスクリプトファイルからSQLサーバー2008 Webエディションにデータを持つすべてのデータベースを復元するのを手伝ってもらえますか?

症状:SQL Server標準2005のSQL Server 2008 Webエディションへのアップグレードオプションはサポートされていません。 SQL Server 2005の標準インスタンスをSQL Server 2008のWebエディションにアップグレードする予定です。これはサポートされていません.SQL Server 2005標準のすべてのデータベースを単一のスクリプトファイル(.sql)にバックアップしてSQL Server 2008の新しいインスタンスをインストールすることを検討しています単一のスクリプトファイルを新しいインスタンスに復元することができます。すべてのデータベースを単一のスクリプトファイルにバックアップしてください。

OR

代替オプションは、SQL Server 2008 Webエディションの新規インストール時にスクリプトを使用してすべてのデータベースを復元するスクリプトを生成することです。

お願い助けて。

おかげで多くのジェイソン。私はDBをバックアップし、圧縮し、別のサーバにアーカイブを送り、圧縮されていないBAKを削除する必要がありました;あなたのスクリプトは私が欠けていたものでした(上記のようなわずかなカスタマイズと使用されています)。

これは非常に便利なスクリプトでした。特定の時間にバッチファイルを自動的に実行する方法はありますか?

私自身の質問に答えるために、Windows組み込みのシステムツール、タスクマネージャを使用しました。特定の時間にバッチファイルを実行するタスクを作成しました。これは非常に便利なツールで、毎日バッチファイルを実際に実行する必要がありません。

@Hayden:タスクスケジューラへのコマンドラインインターフェイスもあります。AT /?詳細については。 ATコマンドはスクリプトをLocalSystem権限で実行するようにスケジューリングしますが、GUIはタスクを設定したどのユーザーアカウントでも実行するようにGUIをスケジュールします。したがって、ATでスケジュールされたスクリプトは、元のユーザーの管理者アカウントが削除または無効にされた後も引き続き実行され、GUIのスケジュールされたジョブは実行されません。

今このHowtoの主なコメント

1. DATE / Tの代わりにMSが依然としてサポートしているWindows版では、DATEはデフォルトでDATE / Tが出力する値の魔法の変数なので、 “%DATE%”を使うことができます。

2. 4つのシステムデータベース(マスターなど)の*ブランク*バージョンは、SQLサーバーの新規インストールに含まれていますが、サーバーを構成することによってそれらのデータベースに間接的に加えられた変更はすべて含まれていません。だから彼らもバックアップして復元する必要があります。残念ながら、マイクロソフトでは、これをバックアップするための特別なルールを制定することにより、これをさらに困難にしています。

SQL Server用の新しいバックアップシステムを作成する際に、あなたのスクリプトを大まかな出発点として使用します。

こんにちは、私はスクリプトを動作させることはできません、それは “この時点で予期せぬ1″と言いました。どんな身体であれ、何が問題なのかを知っている。

感謝。

放送テレビの視聴者は2002年以来50%驚異的に減少しましたが、それは私たちが放棄したことを意味するものではなく、YouTubeやNetflixなどのビデオソースをストリーミングした結果、画面の時間は安定していました。