復元されたことを検出できる SQL Server データベース インスタンスに固有のものはありますか。クライアントがデータベースを使用していて、別のサーバーで同じデータベースの別のコピーを復元して実行することを決定した場合、t-sql クエリを使用して 2 つの違いを見分ける方法はありますか?
質問する
1252 次
2 に答える
5
データベースを別のデータベースの復元/コピーとして識別する方法はいくつかあります。
service_broker_guid
通常、最も簡単な方法です。データベースが作成されたときに生成され、復元/接続操作中に保持されます。を使用して明示的に変更できるALTER DATABASE ... SET NEW_BROKER;
ため、異なる GUID が必ずしも異なる DB を意味するわけではありません。ただし、同一の GUID は、データベースの共通の起源を意味します。- dbi_familyGUIDは、復元時に保持される文書化されていないブート ページ フィールドです。
- リカバリ パスとリカバリ フォーク LSNは文書化されており、共通のオリジンを識別するために使用できますが、それらはすぐに分岐し、最近復元されたデータベースでも、フォーク LSN を使用するだけで別のデータベースとの共通のオリジンの痕跡がすぐに失われます。
- 暗号化されたデータベース ( TDEは、暗号化キーが変更されない限り (つまり、完全な再暗号化が強制されず、すべての nonce が失われない限り)、ページの nonce (文書化されていない方法、専門知識が必要) によって簡単に識別できます)。
- アプリケーション層のメソッドはコード署名を使用できます: 鍵ペアの生成、ダミー モジュールの署名、秘密鍵のドロップ。署名は再生成できないため (秘密鍵は永久に削除された)、データベースのコピーは、署名を削除せずに元を隠すことはできず、明らかに改ざんが明らかです。
ご覧のとおり、いくつかの方法があり、必要な専門知識のレベルと、提供される改ざんの証拠の程度が異なります。それはあなたの要件と実際のユースケースに要約されます。最終的に、SQL Server はDRM 製品ではないことに注意してください。非常に価値があり、保護する必要があると思われるコード/設計がある場合は、この認識された IP が物理的に制御された環境から離れないように、アプリケーションをホストされたサービスとして提供する必要があります。
于 2013-02-02T11:56:17.020 に答える
0
データベース開発者および管理者は、データベース間の一意性を確保するために、データベーステーブルの主キーとしてGUIDを使用することがよくあります。GUIDの比較に関するこの資料:http://msdn.microsoft.com/en-us/library/ms254976.aspx
于 2013-02-04T16:48:05.277 に答える