SQL server 2005・メンテナンスプランに関する質問

このQ&Aのポイント
  • SQL server 2005において、メンテナンスプランで毎日データベースの圧縮とバックアップ、不要データの削除を行っています。
  • データベースの圧縮タスクで空き領域を解放するには特別な設定が必要なのでしょうか?
  • 20GBのデータベースの圧縮で数十秒しかかからないのは正常なのでしょうか?
回答を見る
  • ベストアンサー

SQL server 2005・メンテナンスプランに関する質問です。

SQL server 2005・メンテナンスプランに関する質問です。 SQL server 2005において、メンテナンスプランで毎日データベースの圧縮と バックアップ、不要データの削除を行っています。 不要データ削除により、バックアップファイルは日に日に小さくなって おり、 メンテナンスプラン開始日より約7GB小さくなっているのですが、 肝心の データベース本体(mdfファイル)は全く小さくなっていません。 データベースを右クリックし、タスク-圧縮を選ぶと、使用可能な空き領域が 7GBと表示されるので、不要データの削除により空き領域は増えているもの の、メンテナンスプランの圧縮時にその空き領域の解放が行われていない ようです。 そこで、質問ですが、メンテナンスプランの圧縮タスクで空き領域を解放する には下記の設定以外に何か特別な設定が必要なのでしょうか? 圧縮後に残す空き領域は10%、解放された領域はオペレーティングシステム に返すよう設定しています。 ※SQLのログで気になるのは、圧縮のメンテナンスプランは毎日実行され、 正常に実行されましたと記述されているのですが、実行時間が数十秒しか かかっていないのです。 20GBのデータベースの圧縮で数十秒しかかかっていないというのは実際には 正常に実行されていないのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.1

T-SQLの表示で、コマンドがどうなっているか確認してください。 http://msdn.microsoft.com/ja-jp/library/ms190488.aspx 手元で確認したところ、「解放された領域はオペレーティングシステム に返す」を指定するとTRUNCATEONLYになるようです。 これだとファイルのデータが入っている末尾を切り捨てるだけなので、状況によっては ファイルサイズは小さくなりません。データが後ろの方に存在しそのデータが消されない場合とか。これはあり得るケースです。 確実なのは、NOTRUNCATEをやってからTRUNCATEONLYをすればファイルは小さくなるかと思います。

関連するQ&A

  • SQLServer2005メンテナンスプランについて

    SQLServer2005メンテナンスプランについての質問です。 メンテナンスプラン・ウィザードでメンテナンスプランを作成し、 「データベースの圧縮」と「履歴のクリーンアップ」の間に 「T-SQLステートメントの実行タスク」をツールボックスより マニュアル追加しステートメントに  USE ["Db名"]  GO  DBCC SHRINKFILE(N'"Db名"_log' , 0, TRUNCATEONLY) を記述し上記前後タスクと接続(完了)しました。  1「データベースの整合性」  2「データベースのバックアップ(完全)」  3「データベースのバックアップ(トランザクションログ)」  4「データベースの圧縮」  5「T-SQLステートメントの実行タスク」※トランザクションログの圧縮、マニュアル追加  6「履歴のクリンーアップ」  7「メンテナンスクリーンアップタスク」※マニュアル追加 メンテナンスプランの実行履歴を確認すると5と7の履歴が存在しません。 また、Windowsの「コンピュータの管理」より  「システムツール」→「イベントビューア」→「アプリケーション」 でログを確認すると5以降は実行された結果が残っていません。 実際には、トランザクションログ・ファイルは「バックアアップ」されて「圧縮」が されているようです。 なぜログが残らないのでしょうか? まだ、設定が足らないのでしょうか? 宜しくご教授願います。 以上

  • SQL Server 2008 のメンテナンス プランの実行について

    SQL Server 2008メンテナンスプランについての質問です。 現在SQL Server 2008 Workgroup Editionを使用しています。 メンテナンスプランでデータベースの整合性確認、インデックスの再構成、バックアップ等を行い完了したら戻り値を取得して 別の処理を行いたいのですが作成したメンテナンスプランをバッチ等で実行することは出来ないでしょうか SP1を適用してメンテナンスプラン自体は使用できるようにはなりました。

  • SQL SERVER 2005のメンテナンスプラン実行エラーについて教えてください

    SQL SERVER 2005にてメンテナンスプランよりデータベースバックアップ(完全)を作成し実行をさせるとエラーとなってしまいます。 SQL SERVER エージェントの履歴を見ると下記の内容が表示されていました。 【SQL SERVER エージェントの履歴】 「10/21/2009 15:33:22,DBバックアップ.Subplan_1,エラー,0,SERVER02,DBバックアップ.Subplan_1,(ジョブの結果),,ジョブは失敗しました。 ジョブは ユーザー SERVER02\Administrator によって起動されました。最終実行ステップはステップ 1 (Subplan_1) でした。.,00:00:00,0,0,,,,0 10/21/2009 15:33:22,DBバックアップ.Subplan_1,エラー,1,SERVER02,DBバックアップ.Subplan_1,Subplan_1,,ステップ 1 の実行を開始できません (理由: 行 (1): 構文エラー). ステップは失敗しました。,00:00:00,0,0,,,,0」 他のサーバーで同じようにメンテナンスプランを作成し実行しても問題がありません。(SQL SERVER 2005のバージョン:9.0.3042) 実行エラーを起こすサーバーはディスク障害を起こし復旧後にSQLを再インストールしています。(SQL SERVER 2005のバージョン:9.0.1399) どのようにすれば正常に実行されるのでしょうか? 見づらい内容で申し訳ありませんが、ご教授の程よろしくお願い致します。

  • SQL SERVER 2005におけるメンテナンスプラン利用時のsaユーザーのパスワード変更について

    教えてください! SQL SERVER 2005 SP3の環境でSQL Server Management Studioを起動し、メンテナンスプランにてユーザーデータベースのバックアップや圧縮などを行っています。 先日、saのパスワードを変更したところ、メンテナンスプランのジョブがエラー(エラーコード18456:ユーザー 'sa' はログインできませんでした)で動かなくなりました。saのパスワードを元に戻したところ、エラーはなくなります。 saのパスワードは管理上定期的に変更したいと考えています。 パスワードを変更する度にジョブを作成し直すのは大変です。何か良い方法はないでしょうか? 分かる方がいましたら、教えてください。 よろしくお願い致します。

  • バッチからメンテナンスプランを実行させるには?

    環境:SQL Server 2005 バッチからSQL Server のメンテナンスプランを 実行して、DBのバックアップを指定のフォルダに格納するという 処理(プラン名:BackUpMaintenancePlan)なのですが、 「dtexec /Ser サーバー名 /U ユーザー名 /P パスワード /SQ "\Maintenance Plans\BackUpMaintenancePlan"」 と記載したバッチ処理をたたくと... ----------------------------------------------------------- 開始: 12:57:55 DTExec: パッケージの実行から返されました DTSER_SUCCESS (0)。 開始: 12:57:55 完了: 12:58:05 経過時間: 10.516 秒 ----------------------------------------------------------- コマンドプロンプトにこのように表示されますが バックアップファイルが生成されません。 SQL Serverのメンテナンスプランを直接実行すると正常に バックアップファイルは格納されているので バッチ処理の書き方に問題がありそうな気がします。 どなたかお分かりになる方がいらっしゃいましたら アドバイス等宜しくお願い致します。

  • SQL SERVER2008の質問です

    SQL2008 EXPRESSで作成したバックアップをSQL2008 R2 EXPRESSにデータベースの復元で問題なかったのですが、SQL2008 R2で修正があったので修正したあと、2008R2でバックアップを取ってSQL2008に復元しようとしたらエラーになります。 データベースはバージョン10.50.1600を実行中のサーバーにバックアップされました。このバージョン(バージョン10.00.1600を実行)とは互換性がありません。 と言うメッセージが出ます。 両方をSQL2008R2にすれば問題ないのでしょうが、SQL 2008R2のバックアップをSQL2008に復元する方法をご存知の方は教えてください。 宜しくお願い致します。

  • メンテナンスプランで「このタスク用のエディタを表示できません」

    お世話になります。 Microsoft SQL Server 2005のManagementStudioのメンテナンスプランを編集できなくなり困っています。 メンテナンスプランのデータベースのバックアップタスクを編集で開こうとすると以下のメッセージが表示され編集画面が開きません。 【アラートメッセージ】 「このタスク用のエディタを表示できません。追加情報'2009/10/08 0:00:00' の値は'Value'に対して有効ではありません。'Value'は'MinDate'と'MaxDate'の間でなければなりません。パラメータ名:Value(System.Windows.Forms)」 先月までできていたのですが、解決方法ご存知の方いらっしゃいましたらどうか教えていただけませんでしょうか。

  • SQL Server 2000 テーブル未使用領域の解放について

    テーブル内の未使用領域を解放する事が出来ずに困っています。 SQL Server 2000で運用中のデータベースで200MB程度を想定していた テーブルが、600MB程度になっていました。おかしいなと思い、 インデックスの再構築でもすれば何か状況が変わるかなと以下の 手順を行いました。 該当のテーブルをDBCC DBREINDEXした後、sp_spaceusedで確認  data と index_size のサイズは約半分に減少  しかしその分 unused が増加 この後データベースを圧縮すれば、unusedの部分が解放されるかと 思いやってみたのですが  unused の領域はそのままで解放されず  data と index_size のサイズが約倍に増加(ほぼ元に戻っている) という状況になってしまいました。 お聞きしたい事は以下の2点です。 1. データベースを圧縮すると、テーブル内のデータ量が増加したように見えるのですが、これは何が起きているのでしょうか? 2. テーブル内の未使用領域を解放する方法は無いでしょうか? よろしくお願いいたします。

  • SQL Server Management Studio Express を使ってのデータベース削除

    Microsoft SQL Server Management Studio Express を使ってSQLを学んでいる入門者です。使用方法でわからない事があるので教えてください。 以下はすべてMicrosoft SQL Server Management Studio Express上での作業です。 (1)'TEST'の名前で新しいデータベースを作成 (2)作成されたデータベース'TEST'のアイコンを右リック→タスク→バックアップで、データベースをバックアップ ここまでの操作で"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup"フォルダには'TEST.bak'でバックアップファイルが作成されました。 次に (3)作成されたデータベース'TEST'のアイコンを右リック→削除→「バックアップを削除し、データベースの履歴情報を復元する」にチェックが入っているので、そのまま実行。 質問ですが、以上の操作を行えばデータベース本体の他に(2)で作成されたバックアップファイル'TEST.bak'も削除されると思ったのですが、そのまま削除されずに残ってしまいます。 (3)の「バックアップを削除し、データベースの履歴情報を復元する」のオプションはどういう意味なのでしょうか。ヘルプを参照しましたが、やはりバックアップファイルは削除されるのではないかと思うのですが・・

  • SQL Server エージェント ジョブ スケジュール

    SQL Server2005を使用しています。 SQL Sever エージェントのジョブ機能を使い、1日1回、データベースのバックアップ、1時間に1回、ログのバックアップを行うよう設定しています。 データベースのバックアップがスケジュールで指定した時刻に行われません。 ログのバックアップは1時間に1回、実行されています。 スケジュールで指定した時刻にバックアップが実行されるようにする設定方法を教えてください。 以上、よろしくお願いします。