“聲明型數據庫發佈”在IDE內操作起來是非常方便的。但是在做安裝包給用戶的時候,或者在DailyBuild服務器上不可能也不應該安裝Visual Studio。還好MS提供了auto deploy的命令行方法。這個命令叫做vsdbcmd 。
這是一個vsdbcmd的運行命令行的模板
Cd <PROJECT_HOME>\sql\debug\
vsdbcmd /ManifestFile:PROJECT_NAME.deploymanifest /a:Deploy /cs:"Data Source=DBSERVER;Persist Security Info=True;User ID=DB USER;Password=DB PASSWORD;Pooling=False" /p:GenerateDropsIfNotInProject=True /p:BlockIncrementalDeploymentIfDataLoss=False /p:TargetDatabase=DATABASE /p:IgnorePermissions=True /p:GenerateDeployStateChecks=False /dd:+
Vsdbcmd 命令解釋
非常複雜的vsdbcmd命令行。簡單做一個解釋:
/ManifestFile:表明後面跟着一個發佈Manifest(清單)文件,裏面涉及到諸如dbschema,Pre deploy File,Post deploy File之類的文件的所在位置和名稱——這些文件都是Database project 在構建後生成的文件,在sql\debug目錄下。用於發佈的信息都在這個Manifest文件內做統一的登記。
/cs:表明跟着的信息就是連接字符串,指向要升級的數據庫的連接信息。
/p: 指名後面是參數和它的值。
/p:GenerateDropsIfNotInProject=True 如果Database project內沒有的對象,是否刪除數據庫內的對象。
/p:BlockIncrementalDeploymentIfDataLoss=False 如果會導致數據丟失,是否阻塞掉這個發佈。
/p:TargetDatabase=DATABASE 指名目標數據庫的名稱。
其他的就沒有那麼重要,可以查詢vsdbcmd的聯機文檔。
我測試了“創建新數據庫和升級數據庫”兩種模式,都通過了。