sql >> データベース >  >> RDS >> Sqlserver

SQLServerで削除されたデータベースを追跡する方法

    SQL Serverのスキーマ変更履歴は、SQLServerから削除されたデータベースの名前を認識できます。大規模なSQLServer環境では、各SQLServerケースの各スキーマ変更履歴とのインターフェイスは非常に面倒な作業です。このブログでは、SQLServerで削除されたデータベースを迅速に自動追跡するための手順を簡単に説明します。

    重要な解決策: 削除されたデータベースコンポーネントをSQLServerから復元する際に問題が発生している場合は、SQL修復ツールソフトウェアを試して、削除されたデータベースオブジェクトをSQLServerにライブでエクスポートしてください。

    SQLServerでデータベースを削除したユーザーを簡単に追跡できる2つの独自の手法があります。主な手法は、組み込みのスキーマ変更履歴レポートを使用することです。次の手法は、SQL Serverのデフォルトトレースをテーブルにロードして、誰がデータベースを削除したかを確認することです。

    SQLServerで削除されたデータベースを追跡する方法

    1。 SQLServerスキーマ変更履歴レポートを使用してデータベースを追跡する

    1. SQL Server Management Studioを開き、SQLServerインスタンスに接続します。
    2. SQL Serverインスタンスを右クリックし、[レポート] –>[標準レポート]–>[スキーマ変更履歴]を選択します。
    3. 次に、スキーム変更履歴レポート が開き、データベースが削除された時刻とともに、SQLServerデータベースを誰が削除したかに関する洞察が得られます。

    2。デフォルトのトレースファイルを使用してデータベースを追跡する

    SQL Serverのデフォルトトレースファイルは、SQLServerインスタンスで何が起こっているのかを理解するためにDBAに非常に役立つデータを提供します。

    以下のクエリを実行して、SQLServerのトレースファイルのデフォルトパスをトレースします。

    SELECT

    パスAS[デフォルトのトレースファイル]

    、max_sizeAS[トレースファイルの最大ファイルサイズ]

    、max_filesAS[トレースファイルの最大数]

    、start_timeAS[開始時間]

    、last_event_timeAS[最終イベント時間]

    FROM sys.traces WHERE is_default =1

    GO

    SQLServerテーブルにSQLServerトレースファイルをロードするためのステップバイステップの説明

    注: SQL Log Analyzerソフトウェアを試して、破損したLDFファイルからデータベースを回復してください。

    以下のスクリプトを実行して、一時テーブルにデフォルトのトレースファイルの内容をロードし、SQLServerでクライアントデータベースを削除したユーザーに関する重要なデータを読み取ります。最新のトレースファイルに重要なデータが見つからない場合は、その時点で、サーバー上のすべてのアクセス可能なトレースファイルからデータをロードしてデータを探索するように規定されています。

    tempdbを使用

    GO

    IF OBJECT_ID(‘dbo.TraceTable’、‘U’)IS NOT NULL

    DROP TABLE dbo.TraceTable;

    SELECT * INTO TraceTable

    FROM ::fn_trace_gettable

    (‘G:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQL2008R2 \ MSSQL \ Log \ log_12.trc’、デフォルト)

    GO

    SELECT

    DatabaseID

    、DatabaseName

    、LoginName

    、HostName

    、ApplicationName

    、StartTime

    、ケース

    EventClass=46の場合「データベースが作成されました」

    EventClass =47THEN'DatabaseDropped'の場合

    その他の「なし」

    END AS EventType

    FROM tempdb.dbo.TraceTable

    WHERE DatabaseName =‘MyTechMantra’

    AND(EventClass =46 / *イベントクラス46はObject:Createdを参照します* /

    またはEventClass=47)/ *イベントクラス47はObject:Deletedを参照します* /

    GO

    まとめ

    このブログでは、組み込みのSQL Serverスキーマ変更履歴レポートを使用するか、既定のトレースファイルを使用することで、SQLServerで削除されたデータベースを効果的に追跡できることを認識しました。さらに、データベースファイルが破損しているか、ひどく破損している場合は、データベースファイルを回復するために、 SQLRecoverySofwareなどのサードパーティツールを使用することをお勧めします。


    1. SQL Server LocalDBの自動シャットダウンを防ぐ方法は?

    2. 列にNULLがない行をフィルタリングする方法

    3. c3p0ステートメントプーリングをアクティブ化する必要がありますか?

    4. SQL Server ServerManagementStudioを使用したデータベースのインポート/エクスポート