昨夜 SQL Azure Import/Export Service を使用して取得した BACPAC で奇妙な問題が発生しました。
私たちのデータベースには、2 つの関連するテーブルがあります。
dbo.Documents --All Documents in the database
Id
DocName
Extension
dbo.ProcessDocuments --Doc's specific to a process
Id
DocumentId (FK -> dbo.Documents.Id with Check Constraint)
ProcessId
そのスキーマに基づいてProcessDocuments
、メイン テーブルにコンパニオン エントリがない行をテーブルに含めることはできませんDocuments
。
ただし、別の環境でデータベースの復元を行った後、最終的には
の 7001 エントリProcessDocuments
。それらに相当するエントリは 7000 のみですDocuments
(欠落 1)。そして、復元を試みたときに復元が失敗しましALTER TABLE CHECK CONSTRAINT
たProcessDocuments
私が想像できる唯一のことは、バックアップが取られているとき、テーブルを順番に (アルファベット順に???) 通過し、一度に 1 テーブルずつデータをバックアップしていて、次のようなことが起こったことです。
Documents
バックアップされます。7000 エントリを含む- 誰かが新しいプロセス ドキュメントをシステムに追加する / に挿入
Documents
&Process Documents
ProcessDocuements
バックアップされます。7001 エントリを含む
その場合、有効なディザスタ リカバリ アセットとして BACPAC を使用するという点で大きな問題が生じます。システムでデータが動いているときに BACPAC を取得すると、BACPAC にデータの整合性の問題が含まれる可能性があるからです。
これは事実ですか、それとも他に何がこれを引き起こしたのかについて誰かが光を当てることができますか?