Sql-Server
如何從使用 SSDT 14.06 在 VS 2015 中創建的部署腳本中刪除 Alter、Drop、Create SQL
我需要為我的 SQL 項目刪除以下自動生成的部署腳本。我正在使用帶有 SSDT 14.06 的 VS 2015。這是否可以在 Drop 選項卡下的 Advanced Deployment 設置中設置?這適用於現有的數據庫部署。
IF (DB_ID(N'$(DatabaseName)') IS NOT NULL) BEGIN ALTER DATABASE [$(DatabaseName)] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [$(DatabaseName)]; END GO PRINT N'Creating $(DatabaseName)...' GO CREATE DATABASE [$(DatabaseName)] ON PRIMARY(NAME = [$(DatabaseName)], FILENAME = N'$(DefaultDataPath)$(DefaultFilePrefix)_Primary.mdf') LOG ON (NAME = [$(DatabaseName)_log], FILENAME = N'$(DefaultLogPath)$(DefaultFilePrefix)_Primary.ldf') COLLATE SQL_Latin1_General_CP1_CI_AS GO USE [$(DatabaseName)];
我在屬性中的部署選項中未選中以下項目:
– 部署數據庫屬性
– 始終重新創建數據庫
– 如果可能發生數據失去,阻止增量部署
– 在目標中而不是項目中刪除對象
– 不要使用 ALTER ASSEMBLY 語句來更新 CLR 類型
我只見過在兩種情況下編寫腳本的程式碼:
當選中“始終重新創建數據庫”高級發布選項時。
該選項可以通過多種方式設置,具體取決於您的部署過程的工作方式。
在使用者界面中,當您進行一次性發布或保存可重複使用的“.publish.xml”文件時:
在不使用 UI 的情況下,您可以在發布文件 XML 中看到:
<CreateNewDatabase>True</CreateNewDatabase>
請注意,預設值為“False”,因此該元素的缺失也意味著 false
您還可以將其作為命令行參數傳遞給
sqlpackage.exe
:/p: CreateNewDatabase=True
當 TargetDatabase 不存在時
如果目標數據庫不存在,則出於安全原因將其添加到腳本中,以確保它不會在創建新數據庫時失敗。
您需要仔細檢查發布 XML 中的這些屬性是否指向存在的有效數據庫:
<TargetDatabaseName>YourDatabaseName</TargetDatabaseName> <TargetConnectionString>Data Source=...etc...</TargetConnectionString>
它在 UI 中:
如果您可以分享有關如何生成發布腳本的更多詳細資訊(您所做的分步操作,例如右鍵點擊 Visual Studio 中的 SSDT 項目、發布等),我們可以幫助追踪顯示的原因為你準備。