簡體   English   中英

包括但不能刪除SQL架構比較

[英]Include but not Delete SQL Schema Compare

我試圖在Visual Studio 2013/15中使用SQL模式比較,並且遇到了從刪除表中刪除表的問題,使它們完全無法處理。

問題是它試圖刪除的表是客戶制造的表,所以當我們將我們的版本與他們的數據庫同步時,它要求刪除它們。 我們不想刪除它們,但是它們的一些表對我們的表有約束,因此當它嘗試CCDR時由於表約束而失敗。 有沒有辦法添加表(重新創建?像其他人一樣?),而不是為每個客戶端編寫腳本來執行SQL Schema Compare已經為這幾個表做的事情?

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

更新:

“刪除不在源中的約束”選項似乎無法正常工作。 它確實會丟掉一些,但是還有一些它不會放棄約束。 在red-gate的工具中,當我們比較時,我發現了如何從中獲取SQL,而他們的產品並沒有說表需要根據需要進行更新,而Visual Studio則可以。 它們似乎工作幾乎相同,但失敗的表是根本不應更新的表(見下文)

更新2:

我發現的另一個問題是“Ignore column collat​​ion”也無法正常工作,因為不應該被刪除的表被告知他們需要更新,即使它只是列更改的順序,而不是實際的列或數據變化,這使得這更像是一個錯誤報告而不是任何東西。

忽略列校對

仍然顯示列整理

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

這是一個很好的使用工具,比編寫Sql更容易,但是沿着這條路走下去存在巨大的可靠性和一致性風險。

我不知道這是否會有所幫助,但我在下面的頁面中找到了這一段: https//msdn.microsoft.com/en-us/library/hh272690(v = vs.103).aspx

更新將失敗,因為我們的更改涉及將列從NOT NULL更改為NULL,從而導致數據丟失。 如果要繼續更新,請單擊工具欄上的“選項”按鈕(左起第五個)以進行架構比較,如果數據丟失選項,則取消選中塊增量部署。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM