結構描述比較問題疑難排解
當您比較兩個資料庫結構描述時,可能會遇到本主題所述的問題。
相依性與更新指令碼
為了讓更新指令碼中的物件有正確的順序,「結構描述比較」會檢查物件相依性。 例如,假設檢視相依於資料表,就必須先建立資料表,才能建立檢視。 如果物件與第二個物件相依,但未使用符合結構描述資格的名稱,則可能無法辨識相依性,而且更新或建立指令碼的陳述式順序也可能不正確。 當您更新「目標」(Target) 使其與「來源」(Source) 相符,或是將變更部署至資料庫時,這樣的差異可能會產生錯誤。 資料庫建置指令碼也有相同的問題。
注意事項 |
---|
若要解決此問題,請確定與相依關聯性有關的物件有使用符合結構描述資格的名稱。 在下列範例中,如果將陳述式的結尾變更為參考 [dbo].[KeysTable],而不只是 KeysTable,就能確保正確辨識相依性: |
CREATE VIEW [NewUser].[ViewReferencingScalarFunction] AS SELECT Column2, dbo.SimpleMultiplyParamByTwo(PK_Column) AS [Function] FROM KeysTable
資料表和索引選項
如果是使用 sp_tableoption 或 sp_indexoption 所設定的選項,[結構描述比較] 不會比較這些選項或編寫這些選項的指令碼。 這個問題沒有解決方法。
比較大型資料庫時發生逾時
如果您在比較大型資料庫的結構描述時,收到逾時錯誤,您可能需要提高逾時值。 這個選項不會透過使用者介面來公開。 您必須修改儲存在 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\VSTSDB\Database 底下之登錄中的 QueryTimeoutSeconds 值 (以秒數指定)。 預設的逾時為 60 秒。
比較檔案和檔案群組
如果檔案群組所在的目標資料庫是唯讀的,則在該資料庫和資料庫專案間的結構描述比較中,該屬性永遠會顯示為差異。 此外,比較結構描述時也會忽略主要檔案群組。
此外,如果您嘗試同步處理同一部伺服器上的兩個資料庫,您可能會在嘗試同步處理次要檔案和 Filestream 時遇到問題。 您可以透過在同步處理時排除檔案群組和檔案來解決這些問題。