web-dev-qa-db-ja.com

SQL Server 2008でトランザクションログを表示する方法

データベースのトランザクションログを SQL Server 2008 で表示して、削除トランザクションを見つけ、それをロールバックする必要があります。

残念ながら、どこから始めればよいのかわからず、どのgood記事がGoogleにあるのかを判断するのは難しいと感じています。

私は何をすべきか?

53
109221793

文書化されていないものを使用できます

DBCC LOG(databasename, typeofoutput)

ここで、typeofoutput:

0: Return only the minimum of information for each operation -- the operation, its context and the transaction ID. (Default)
1: As 0, but also retrieve any flags and the log record length.
2: As 1, but also retrieve the object name, index name, page ID and slot ID.
3: Full informational dump of each operation.
4: As 3 but includes a hex dump of the current transaction log row.

たとえば、DBCC LOG(database、1)

Fn_dblogを試すこともできます。

トランザクションログを使用してトランザクションをロールバックするには、Stack Overflow postトランザクションログを使用したトランザクションのロールバックを参照します。

52
kevchadders

適切に文書化されていないため、トランザクションログファイルを簡単に読み取ることはできません。これを行うには、基本的に2つの方法があります。文書化されていない、または半文書化されたデータベース関数を使用するか、サードパーティのツールを使用します。

注:これは、データベースが完全復旧モードの場合にのみ意味があります。

SQL関数:

DBCC LOGおよびfn_dblog-詳細 here および here

サードパーティツール:

Toad for SQL Server および ApexSQL Log

また、これが議論された他のいくつかのトピックをチェックアウトできます。

20
JdMR

間違った環境で大量のデータを誤って削除してしまいました。この投稿は私が最初に見つけたものの1つです。

パニック状態と解決策の検索を同時に行っていたため、最初に目にしたものは ApexSQL Logs でした。これは許容可能なコストである2000ドルでした。

しかし、私は Toad for Sql Server がトランザクションログから元に戻すスクリプトを生成でき、たった$ 655であることがわかりました。

最後に、さらに安価なオプション SysToolsGroup Log Analyzer が見つかりました。これはわずか300ドルです。

5
viggity