2016-08-01 42 views
17

我試圖在Visual Studio 2013/15中使用SQL架構比較,並且遇到了從刪除表中刪除它們從而無法處理它們的問題。包括但不是刪除SQL架構比較

問題是它試圖刪除的表是客戶創建的表,所以當我們將我們的版本與他們的數據庫同步時,它會要求刪除它們。我們不想刪除它們,但它們的某些表對我們有約束,所以當它嘗試CCDR時,由於表約束而失敗。有沒有一種方法可以添加表格(重新創建?像其餘的那樣?),而無需爲每個客戶端編寫腳本來執行SQL Schema Compare已經爲那些表格執行的操作?

Red-Gate的SQL比較以某種方式做到這一點,但它對我們隱藏,所以不太確定它是如何實現的。排除不會刪除,但腳本也不會出錯。

UPDATE:

選項「不在源drop約束」似乎並沒有正常工作。它的確會減少一些,但也有其他人認爲它不會降低約束條件。在red-gate的工具中,當我們比較時,我發現如何從中獲得SQL,而他們的產品並沒有說表格需要更新,而Visual Studio的工具則是。他們似乎工作幾乎是相同的,但失敗的表是那些不應該在所有的更新(閱讀以下)

更新2:

我發現的另一個問題是「忽略列排序規則」也不能正常工作,因爲不應該被丟棄的表被告知他們需要更新,即使它只是列更改的順序,而不是實際的列或數據更改,這使得更像是錯誤報告比任何東西。

Ignore column collation checked

Still showing column collation

回答

0

我不知道這是否會幫助,但我已經找到了下頁本款 : https://msdn.microsoft.com/en-us/library/hh272690(v=vs.103).aspx

的更新將失敗,因爲我們更改涉及將列 從NOT NULL更改爲NULL,並因此導致數據丟失。如果要 繼續更新,請單擊模式比較工具欄上的選項按鈕(左起第五個 ),並取消選中 塊增量部署(如果有數據丟失選項)。

+0

我已經取消選中該框,問題出在一個關鍵碼上,而不是因爲數據丟失。不過謝謝 – Dispersia

1

我對這些類型的預先數據計算的建議是不使用Visual Studio。將邏輯放在Sql引擎上,並在Sql中爲此編寫代碼。由於Sql引擎的多用戶鎖定問題,當用戶操作的錯誤組合同時發生時,這些類型的進程很容易失敗。由於Sql引擎可以更改記錄,因此Visual Studio工具無法與數據鎖定問題交互。如果你甚至可以實現這個功能,那麼只有在單用戶模式下運行纔是安全的。

這是一個不錯的使用工具,比編寫Sql容易,但是對於走這條路,存在巨大的可靠性和一致性風險。