問題タブ [transaction-log]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - ミラーリングされたSQLServer2005データベースのトランザクションログを縮小する
私はインターネット全体を探していましたが、私の問題に対する許容できる解決策を見つけることができません。妥協のない解決策さえあるのだろうかと思っています...
私はDBAではありませんが、巨大なWebサイトで作業している一人のチームであり、追加の団体に追加の資金を提供することはありません。そのため、できる限り最善を尽くしています。
私たちのバックアップ計画はひどいものであり、私はそれを改善するのに本当に苦労しています。現在、SQL Server 2005を実行しているサーバーは2つあります。ミラーリングされたデータベース(監視なし)があり、正常に機能しているようです。私は正午と深夜に完全バックアップを行います。これらはサービスプロバイダーによって毎晩テープにバックアップされ、古いレコードを手元に置いておくために、バックアップファイルを毎週DVDに書き込みます。ミラーリングは監視サーバーがないと意味がないように見えるので、最終的にはログ配布に切り替えたいと思います。
問題は、トランザクションログがノンストップで増加していることです。私が行った調査から、ミラーリングされたデータベースのログファイルを切り捨てることができないようです。では、どうすればファイルの成長を止めることができますか?
このウェブページに基づいて、私はこれを試しました:
しかし、それはうまくいきませんでした。私が見つけた他のすべては、ミラーを機能させるために、backuplogコマンドを実行する前にミラーを無効にする必要があると言っています。
私の質問(TL; DR)
ミラーを無効にせずにトランザクションログファイルを縮小するにはどうすればよいですか?
sql - トランザクション ログに問題がある SQL ジョブ
単純にストアド プロシージャを実行する SQL ジョブがあります。毎朝ジョブを実行しようとすると、次のエラーが表示されます:
現在のトランザクションはコミットできず、ログ ファイルに書き込む操作をサポートできません。
ジョブを再起動しようとすると、同じエラーが発生し続けます。ただし、ジョブを使用せずにストア プロシージャを実行するだけでは問題なく動作します。
そして、ここが本当にトリッキーな部分です。ストアド プロシージャを実行し、キャンセルしてからジョブを実行すると、ジョブは問題なく動作します。
誰かがこのかなりユニークな問題に遭遇したか、それを引き起こしている可能性のあるアイデアを持っていますか?
sql - SQL Server 2008 のすべてのトランザクション ログを表示する
問題はこれです:
t3 (現在) の後に削除されたレコードを復元するにはどうすればよいですか? t0 と t1 の間の状態のデータベースが必要です。ログ レベルは Full でした。
編集: 既に DBCC LOG(DB-Name, 3) を実行しましたが、ログが切り捨てられているようです。何千もあるはずなのに、10 項目しかありません。
sql-server-2005 - SQL Server 2005 のトランザクション ログが増えない/更新されないのはなぜですか?
トランザクション ログが 1 週間更新されていない SQL Server 2005 データベースがあります。トランザクション ログは、使用可能なすべてのディスク領域を使い果たした状況のため、最近切り捨てられました。同じサーバーにテスト データベースがあり、予想どおり毎日成長しています。これの原因は何ですか?
sql-server-2000 - SQL ServerTempdbLOGファイルの増加
SQL Server 2000システムには、無制限に大きくなるように見えるtemplog.ldfファイルがあります。しかし、確認すると、(DBCC OPENTRANを使用して)tempdbに開いているトランザクションがないことも、tempdb内で明示的なトランザクションを使用することもありません。
ただし、ストアドプロシージャ内で一時テーブルを使用しています。そして、ASP.NETデータアクセスオブジェクトが舞台裏で何をする可能性があるかを誰が知っていますか?データベースはASP.NETWebサイトをサポートしています。
とにかく、tempdb.mdfファイル(tempdbデータファイル)はかなり妥当な700MBです。templog.ldfファイルは1日で30GBまで増大する可能性があります。ディスク容量が不足していなければ、おそらくもっと多いでしょう。ストアドプロシージャに#tablesを明示的にドロップしませんが、mdfファイルが非常に大きくなることはありません。
未処理のトランザクションがないのに、なぜトランザクションログが大きくなるのですか?トランザクションログはスペースを再利用しますか?また、DUMP TRAN WITH NO_LOGは、ファイルを縮小せず、TRUNCを介したCHECKPOINTイベントも行いません。tempdbでログオンchkptが有効になっています。SQL Serverを停止すると、tempdbがクリアされます(おそらくDBCC SHRINKFILEはクリアしますが、私はそれを実行していません)。
ご協力いただきありがとうございます!
sql-server - SQLServer2005でトランザクションログの論理名を取得する方法
データベースの論理名に基づいてDBCCSHRINKFILEを使用して、トランザクションログファイルを縮小するT-SQLルーチンを作成しようとしています。このDB_NAME()
関数は、データベースの論理名を提供します。トランザクションログに相当するものはありますか?そうでない場合、この情報を取得する他の方法はありますか?トランザクションログのデフォルト名はですが<<Database Name>>_log
、私はこれに依存したくありません。
sql-server - SQL Server がトランザクション ログに非常に関連付けられているように見える理由
では、どうぞ。私はデータベースの第一人者でも管理者でもありません。実際、インデックスやクエリのチューニングをときどき行う以外は、データベースを頻繁に調べたりはしません。よくわからないものの 1 つは、SQL Server トランザクション ログです。それが何のためにあるのか、何が含まれているのか、そしてどのように機能するのか (少なくとも概念的には) は知っていますが、SQL Server がトランザクション ログにそれほど関連付けられているように見える理由がわかりません。
これが最初の質問です。間違っている場合は訂正してください。ただし、デフォルトでは、トランザクション ログには、データベース内のすべての変更の履歴全体が含まれているように思えます。これが実際に当てはまる可能性があることを示す 2 つの兆候があります。新しいデータベースを作成すると、そのログの最大サイズが「無制限の拡張」に設定されます。2 番目の理由は、私が何をしても縮小できない巨大なトランザクション ログを持つ小さなデータベースを扱ってきたことです。とても奇妙に思えますが、それが本当だとは信じられません。デフォルトで履歴全体が必要になるのはなぜですか? 私が気にするのは、一貫した状態の最新バージョンのデータだけです。まあ、場合によっては正当な理由があるのではないかと思いますが、これは追加のオプションと考えています。
2 番目の質問は、遷移ログを削除するのがなぜそれほど複雑なのかということです。それは私だけですか、それとも実際にそれを行う直接的な方法はありませんか? つい最近、私は 5MB のデータベースの 100MB 以上のログを取り除こうとしましたが、見つけた最も簡単な方法は、データベースをデタッチし、ログを削除して、再度アタッチすることでした (SQL Server でさえ少し文句を言いました)。可能なすべてのオプションを指定して縮小コマンドを試しましたが、約 50% までしか縮小できませんでした。データベースは使用されておらず (アクティブな接続はありません)、正直なところ、過去の遷移はまったく気にしませんでした。それを行う方法が他にもいくつかあることに気付きました。バックアップと復元を伴うものもあります。
私は熱心に MSDN のドキュメントを読み、トランジションについてもっと学ぼうとしましたが、約 15 分後、まるで泥の中をぐるぐる回っているように感じ、諦めました。データベース管理者や専門家にとって、私の質問はばかげているように聞こえることはわかっています。フィードバックをいただければ幸いです。
編集:最初の回答の後、私は十分に明確でない可能性があることに気付きました. トランザクション中にトランザクション ログがどのように機能するか、それが重要である理由、およびバックアップ目的で使用できることを認識しています。開発者の観点からもっと質問したかったと思います。ほとんどの場合、バックアップを必要とせず、私以外に誰も使用していない一時データベースのステージング/テストを扱っています。また、そのような状況では、データベースを転送する必要があり、膨大な移行ログを持つことは不必要な不便であることがよくあります。 .
sql-server - SQL Server の完全なログの問題 -- データベースを更新する方法は?
SQL Server 2000 を使用しており、国際文字を処理できるように、フィールドのデータ型を varchar から nvarchar に変更しようとしています。ただし、そのテーブルには既に大量のデータがあり、変更を保存しようとすると、次のエラーが発生します。
テーブルを変更できません。ODBC エラー: [Microsoft][ODBC SQL Server Driver][SQL Server] データベース 'AppTest_Apps' のログ ファイルがいっぱいです。データベースのトランザクション ログをバックアップして、ログ領域を解放します。
これは 1 回限りの更新です。エラーを回避するにはどうすればよいですか?
sql-server - 何をしてもトランザクションログを縮小できません
tlogが4.5GBに増えたデータベースがあります。dbは完全リカバリモードであり、DBCCシュリンクファイルと組み合わせていくつかのトランザクションログバックアップを試しました。そしてそれは縮まないでしょう。誰かアイデアはありますか?
ステータスが=2のトランザクションがいくつかありますが、データベースにアクティブなトランザクションはありません。なぜまだstatus=2で表示されるのだろうか。
sql-server - SQL Server 2005のトランザクションログエントリ:LOP_Format_Page
データベースが一括ログモードに設定されているにもかかわらず、ETLプロセス中の大規模なログ拡張に関連する問題を調査しています(疑似シンプルでは実行されていませんが、実際には一括ログに記録されています)
:: fn_dblog(null、null)関数を使用して、トランザクションログ操作と操作のコンテキストを調べると、ログの拡張は、LCX_HeapコンテキストでのLOP_FORMAT_PAGE操作のログにほぼ完全に依存します。(拡張の97%はその操作であり、1回のデータロードで60万回以上ログに表示されます。)
問題は、SQLが行ったlop_format_pageの実行/記録は何ですか?
それを考えると、論理を逆にして、原因/結果の連鎖がこれをもたらすものであるかを理解し、必要に応じてETLを変更できるはずです。
多くの人がこれに出くわしたとは思っていません。操作とコンテキストに関する利用可能な詳細のレベルはごくわずかです。