• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLServer7.0のLDF圧縮)

SQLServer7.0のLDF圧縮方法とは?

uamsの回答

  • ベストアンサー
  • uams
  • ベストアンサー率63% (100/157)
回答No.1

懐かしいですね、SQL Server 7。 ちょっとメニューがどうだったか覚えていないのですが、バックアップをファイル単位(データまたはトランザクション)でできるのであれば、トランザクションファイルだけをバックアップすれば、トランザクションログの使用領域は小さくなります。その上でトランザクションファイルの圧縮をすれば、ファイルとしての実体は小さくなります。この手順は現在のバージョンでも変わりありません。 あとは復旧モデルを「完全」以外にする、別のバージョン(たとえば無償の2008 Expressなど)に復元してみるなどが考えられます。 サーバーの設定の影響もあるかもしれないので、可能であれば、サーバーAで同じ作業をして小さくなるのを確認してからフルバックアップしたものを復元した方が確実かと思います。 あと、試したことはないのですが、LDF(トランザクションファイル)は実データではないので、一度デタッチしてLDFを削除し、同名のLDF(新規のデータベースを作って同名のLDFを作成、ファイルの新規作成で0バイトのテキストファイルをリネームして~.ldfで保存など)を作ってアタッチすることもできると聞いたことがあります。以前SQL Server 2008でそれを試したらうまくいかず、さらに元のLDFを削除してしまったためにどうにもならなくなった思い出があるので、試すのであれば削除ではなく別の場所に退避しておくことをお勧めします。

gookyuu
質問者

お礼

ありがとうございます。 お返事が遅くなってしまいました。 実のところ今回、SQL7のDBバックアップファイルからSQL2000に復元することが目的だったのですが、 LDFが大きいせいか、SQL2000上で復元完了後、OS自体が壊れてしまいます。 (Cドライブに入れない等、エラー多発で、さらには再起動するとOSが見つからないエラーになってしまいます、、、) で、仕方なく、MDFのみSQL2000上に移しアタッチしたところ、新しいLDFが作成され、 無事にSQL2000上にDBを移行することができました。

関連するQ&A

  • LDFファイルからのロールフォワード

    SQL Server 2005 Express Editionを使用しています。 物理的に1つのディスクで、CドライブとDドライブがあり、 mdfもldfもDドライブに配置していました。 完全復旧モデルで、毎日データベースを夜間バックアップし、 ログファイルは、その後Truncate_onlyして切捨てを行っていました。 上記状況でシステム稼動中にWindowsがフリーズ、 電源を強制的に落としたところ、セーフモードでも 起動できなくなった為、再インストールしました。 こういう状況ですので、残っている物は、  ・前日のフルバックアップ  ・稼働中だったmdfとldf のみという状況です。 できる限りデータを復旧しようとした場合、 フルバックアップからリストアし、その後、 残っていたldfからロールフォワードという虫のよいことは できるのでしょうか? 良い方法があれば教えてください。

  • データ圧縮

    SQLServer2000にデータ量の大きなテーブルがあり、 そのデータ量を大幅に減らして、 圧縮をかけてもldfやmdfファイルは小さくなりませんでした。 圧縮前にページを先頭に移動や 個別に圧縮などをしてもファイルサイズは変わりませんでした。 圧縮をかける前になにかしないとデータ領域は小さくならないのでしょうか?

  • SQLServerバックアップ戻せない

    SQL Server2012 Expressで作成したデータベースをUSBメモリにバックアップしました。 最近、マシントラブルでドライブが死んだので、SQL Serverも入れ直し、データベースをリストアしようとしましたが、うまくできません。 具体的には、データベースを右クリックして「タスク」→「復元」→「データベース」として、デバイスを選ぼうとすると、バックアップファイルの拡張子がbakとtrnとなっており、USBメモリに記録されているmdfとldfではありません。 すべてのファイルを表示させ、それらを選択しても、データベースの復元ダイアログのOKボタンがグレーアウトのままです。 「タスク」→「復元」→「ファイルおよびファイルグループ」なのかな?と思って、やってみてもやはり、拡張子が違います。 同じようにmdfとldfを選択してみると、 「デバイス'データベース名.mdf'のメディアファミリが正しい形式ではありません」 「RESTORE HEADERONLYが異常終了しています。(エラー:3241)」 とのダイアログが出て復元できません。 私はバックアップを失敗したのでしょうか? 何とか、一部のデータでも復元できないでしょうか? よろしくお願いいたします。

  • SQLServer2000でのトランザクションログ削除

    SQLServer2000のEnterpriseManagerにて、 「データベース全体+トランザクションログ」バックアップの設定を行ったのですが、 バックアップ時にトランザクションログが削除されていないようで、 ログファイルがみるみる大きくなってしまいまい、 数日で、HDD容量を使い切ってしまいそうです。 設定されたジョブの内容を確認したところ、 BACKUP LOG [DB名] TO [デバイス名] WITH NOINIT, NOUNLOAD, NAME = N'バックアップ名', NOSKIP, STATS = 10, NOFORMAT, NO_TRUNCATE のようになっていたので、NO_TRUNCATEを外してみましたが、ダメでした。 この『教えて!goo』内でも検索したのですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=176852 が同内容の質問だったのですが、こちらはSQLServer7.0で、 この方法は、2000では使用できませんでした。 勉強不足でまことに申し訳ございませんが、 何卒、宜しくお願いいたします。 ≪環境≫ OS: Windows2000Server + ServicePack2 SQL: SQLServer2000 + ServicePack2

  • SQLSERVERの圧縮について教えてください

    すみません初心者です。 SQLSERVERの圧縮について教えてください 完全、単純とありますが、単純での環境で、DBをバックアップして復元したときに 何か問題はおきますか? また、データが重くなり、パフォーマンスを上げたいとき、圧縮という考えは有効 でしょうか? よろしくお願いいたします。

  • .LDFファイルが30GBになってしまいました。

    .LDFファイルが30GBになってしまいました。 SQL Server 2005でSharePointServer 2007を運用中です。 気がついたら、STS_Config_log.LDFというファイルのサイズが35GBになっていました。 100MB程度にサイズを小さくしたいのですが、方法が分かりません。 お分かりの方よろしくお願いいたします。

  • exeやbatで2000のバックアップを2005で復旧

    現在のシステム(SQLServer2000)でexeからRestoreDatabaseを行っているのですが、同じくexeでBackupDatabaseを行って作成したバックアップファイルをSQLserver2005で復旧すると(RestoreDatabaseおよびSQL Server Management Studio Expressを使用した手動復元)両方ともエラーが出てしまい復旧できません。 原因としては2000と2005のLDFファイルおよびMDFファイルの場所が違うせいかと思われ、手動で復元する際に詳細設定でLDFファイルおよびMDFファイルの場所を指定し直してやれば問題なく復旧ができるのですが、システムを使用する人がパソコンに詳しい人でないため、SSMSEなどを使った手動操作を案内することが不可能と思われるため、batもしくはexeを配布して対応ができればというところです。 RestoreDatabaseなどを行う際に、対象とするMDFファイルおよびLDFファイルを指定することは可能でしょうか?

  • データベースの圧縮について

    お世話になります。 初歩的な質問かもしれませんが、よろしくお願いします。 SQL Server 2000 を使用しています。 比較的大きいサイズのデータベース「A」があります。 Dataフォルダ内のサイズは次の通りです。 ・A.mdf 50MB ・A_1.mdf 4.4GB ・A_log.ldf 1.2GB この「A」を別の用途で使用したいため、全てのテーブルのデータを削除しましたが、Dataフォルダ内のサイズがほとんど変わりません。 プロパティのデータベースの圧縮で見ると、空き容量が98%と表示されているので、無駄な領域が多いのは分かるのですが、実際に圧縮をかけても小さくなりませんでした。 方法が悪いのかもしれませんので、データベースを圧縮する手順を教えて頂ければ幸いです。 よろしくお願いします。

  • SQLServer2000から7.0への移行

    SQLServer2000で構築したデータベース(mdfファイルとldfファイル)をSQLServer7.0にアタッチ機能(クエリアナライザで「sp_attach_db」を実行して)で移行させようとしましたが、「ldfファイルのヘッダーが有効でありません。PageAuditプロパティが不正です。」とのエラーメッセージが出て、実行できませんででした(ちなみにPageAuditの意味もわかっていません)。 ご質問なのですが、そもそも2000で構築したデータベースは、7.0のアタッチ機能で7.0への移行は無理なのでしょうか。それとも、当たり前かもしれませんが、2000のldfファイルの構造そのものが違い、7.0で認識させるのは、不可能なのでしょうか。 お忙しいところすいませんが、よろしくお願いします。 教えて下さい。

  • SQL Server2005 トランザクションログの圧縮ができない

    SQL Server2005でトランザクションログをバックアップ後、下記コマンドで圧縮を行いましたが、 DBCC SHRINKFILE (N'*****' , 1000) 下記メッセージが表示されてファイルサイズが圧縮されません。 「ログ ファイル 2 (*****) を圧縮できません。すべての論理ログ ファイルが使用中です。」 TRUNCATEONLYで実行しても同様のメッセージが出て圧縮できません。 DBCC SHRINKFILE (N'*****' , 0, TRUNCATEONLY) 現在トランザクションログファイルは100GBと巨大になっています。 バックアップにより中身は99%が未使用になっているのに物理ファイルを小さくできなくて困っております。 何か解決策はありますでしょうか?