我目前正在裝載一個新的sqlproj,並在項目過程中使用RedGate SqlCompare生成的自定義腳本,因爲我們採用SSDT。不過,我發現,相當惱人的是,SSDT在ScriptsIgnoredOnImport文件中插入了很多東西。爲什麼Sql Server Data Tools在導入腳本時不能理解Drop語句?
似乎有一些解決方法來幫助SSDT的工作。例如,刪除RedGate放入的樣板事務處理東西似乎可以幫助它排序整個腳本。在存儲過程的情況下,似乎將所有ALTER PROCEDURE命令更改爲CREATE PROCEDURE會導致SSDT檢出舊文件並用新文件覆蓋它,這正是我想要的。但是,對於任何涉及DROP語句(表,過程;任何事情)的任何事情,我都不能讓我的生活變得簡單地刪除文件。當涉及清理1000個物體時,我不能考慮任何涉及手動操作的事情。
因此,現在我已經使出通過ScriptsIgnoredOnImport使用PowerShell文件撕裂和每個匹配一個DROP PROCEDURE行中調用tf delete
,但是這確實是一個以次充好(不提痛苦緩慢運行)的解決方案。
我真的很想知道如何讓SSDT刪除東西。它只是不支持通過腳本導入刪除對象嗎?
您是否嘗試過使用SQL Schema比較數據庫與項目?這應該允許你輕鬆地放下一堆物體。 (遺憾的是,通過導入刪除對象不起作用,也不執行ALTER語句)。如果這是一次性任務,我可能會建立一個本地數據庫,在其上運行Red-Gate腳本,然後將它與SQL Project創建/更新/刪除對象。如果這是持續的,那將需要一個不同的解決方案,但這至少可以讓你開始。 –
這實際上是一個非常棒的主意!我們已經調和了目前所有的腳本,因此我們暫時沒有機會對此進行測試,但如果您將其作爲答案提交,我肯定會讚揚它,直到我可以將其標記爲回答。 – bwerks
@bwerks - 你最終得到的結果是否令你滿意?如果您想嘗試使用Red Gate工具以及數據庫項目,請通過Red-Gate dot com的David.Atkinson與我聯繫,我很樂意提供幫助。 –