勤務中、MSSQLデータベースサーバーに遭遇します。 多くの場合、データベースのアーカイブ、テストサーバー、および運用環境で迅速に構成する必要があります。 さらに、ネットワークでは、多くの異なる単音節のソース、アーカイブする方法またはアーカイブしない方法を見つけることができますが、多かれ少なかれ普遍的な既製のソリューションはどこにもありません。 新しい職場で、この問題に再び遭遇しました。 特定の理由により、会社のすべてのデータベースは(これまで)単純な復旧モデルのモードになっています。テキストで示されたソリューションは完全ではありませんが、フォーラム、初心者、これらのタスクから遠く離れた開発者や管理者の質問から判断すると、非常に適切な方法です解決策ですが、その過程で、誰もが自分でそれを補足できます。
このスクリプトは、指定されたデータベースをアーカイブします。これには、完全なコピーを作成する曜日、最後の完全アーカイブおよび差分アーカイブの保存量が考慮されます。 単純な復旧モデルでデータベースをアーカイブするために設計されており、ログもアーカイブする必要がある場合は、類推によりスクリプトを完全に補完できます。 おそらく必要なときに、このスクリプトを追加します。 バックアップの最後に、古いデータベースアーカイブがディスクから削除されます。
このコードは、割り当てられたタスクにすぐに追加して、1日1回またはそれ以上の頻度で実行できます。必要に応じて、いくつかのパラメーターを設定しながら、スクリプトに十分なコメントを付けます。
アーカイブを保存するパスを指定します;アーカイブの開始時に、各アーカイブデータベースのサブフォルダーがこれらのフォルダーに作成されます。
アーカイブのために@IncludeBaseで特定のデータベースのリストを指定しない場合、すべてのデータベースが取得され、@ ExcludeBaseで指定されたデータベースはそれらから除外されます。
ここでは、完全なアーカイブの曜日をコンマで区切って示します。
ディスクに残すアーカイブの各タイプの最近のコピーの数:
サーバーでスクリプトを実行すると、アーカイブの圧縮とxp_cmdshellプロシージャを実行する機能が有効になります。 サービスには、ディレクトリをアーカイブするための読み取り/書き込み/削除権限が必要です。
スクリプトテキスト:
このスクリプトは特定のタスク用に作成されています。本番などで議論することは不可能です。意味がないと思います。準備ができていない人が既製のソリューションを取得できるようにするために公開されます。
ユーザー
ideatumのコメントから、xp_cmdshellプロシージャはセキュリティ上の理由からMicrosoft SQL Serverでデフォルトで無効になっていると
付け加えます。
更新
スクリプトが修正され、起動時にデータベースの完全バックアップが作成されるようになりました。データベースが欠落している場合は、たとえ今日がデータベースを作成する日でなくても
更新2
データベースステータスのチェックを追加(オンライン)