4

我正在使用VSTS數據庫版GDR版本9.1.31024.02如何在VSTS數據庫版本部署中自定義CREATE DATABASE語句?

我有一個項目,我們將創建多個具有相同模式的數據庫,隨着客戶被添加到系統中。這是每個客戶一個DB。我以爲我應該能夠使用部署腳本來做到這一點。不幸的是,我總是得到在CREATE DATABASE語句中指定的完整文件名。例如:

CREATE DATABASE [$(DatabaseName)] 
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)targetDBName.mdf') 
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)targetDBName_log.ldf') 
GO 

我期待更多的東西像這樣

CREATE DATABASE [$(DatabaseName)] 
ON 
PRIMARY(NAME = [targetDBName], FILENAME = N'$(DefaultDataPath)$(DatabaseName).mdf') 
LOG ON (NAME = [targetDBName_log], FILENAME = N'$(DefaultDataPath)$(DatabaseName)_log.ldf') 
GO 

甚至

CREATE DATABASE [$(DatabaseName)] 

我不會一個持續的基礎上運行該如此我希望儘可能簡單,爲下一個人。在項目屬性中有很多部署選項,但我無法按照自己的喜好進行工作。

任何人都知道如何設置?

回答

0

嗯,嗯,這似乎是最好的答案到目前爲止(給定了空前的響應)的事實後編輯文件...仍在尋找

1

我們做到這一點使用模板數據庫,我們回來隨着新客戶上線,開始,複製和恢復。我們不使用腳本進行任何模式創建,但使用實時空數據庫。

4

比從未更好的遲到,我知道如何從第二個示例獲取$(DefaultDataPath)$(DatabaseName)文件名。

您在第一個代碼片段中顯示的SQL表明您沒有用於在VSTS:DB項目中創建數據庫文件的腳本,可能是故意將它們從您所做的任何模式比較中排除。我發現它有點反直覺,但解決方案是讓VSTS:DB在您的開發環境中編寫MDF和LDF腳本,然後編輯這些腳本以使用SQLCMD變量。

在您的數據庫項目中,轉到文件夾模式對象>數據庫級對象>存儲>文件。在那裏,加上這兩個文件:

Database.sqlfile.sql

ALTER DATABASE [$(DatabaseName)] 
ADD FILE (NAME = [$(DatabaseName)], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName).mdf', 
    SIZE = 2304 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB) 
    TO FILEGROUP [PRIMARY]; 

Database_log.sqlfile.sql

ALTER DATABASE [$(DatabaseName)] 
    ADD LOG FILE (NAME = [$(DatabaseName)_log], 
    FILENAME = '$(DefaultDataPath)$(DatabaseName)_log.ldf', 
    SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %); 

完整的數據庫創建腳本,VSTS:DB,或者對於VSDBCMD.exe,生成現在將使用SQLCMD變量命名MDF和LDF文件,允許您在命令行或MSBuild中指定它們。

相關問題