SSDT:数据库部署方案

1,sqlserver解决方案 ssdt:sqlserver data tools
好处:每次发布的脚本是动态生成的,可以多次发布,即使中间出错,下次也会从新的开始

2,发布-高级可以设置选项
表-属性: 生成操作. 无指不参与生成,也不会部署

3,添加-脚本
后期部署脚本,指在生成脚本后执行
预先部署脚本,指在生成脚本前执行

4,已有数据库,生成源码操作
右键sqlserver项目,导入-数据库

5,真正发布时,会用脚本来执行,命令行执行sqlpackage
可以点生成,资源管理器打开,在bin下有一个dac文件,可用sqlpackage.exe来调用这个文件来部署
这种部署是最佳实践,因为可以部署到多台服务器上,并且可以版本控制,可对checkin的脚本进行发布
redgate是用事务的,会锁住对象,并且不能插入脚本
在项目中生成文件后,将dac文件copy出来,用sqlpackage.exe发布,在进行发布时会自动比较生成脚本
如:
@echo off
set sqlpackage=”C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe”
%sqlpackage% /Action:Publish /SourceFile:E:\mydb\bin\Debug\BRM.sqlproj.dacpac /Profile:E:\Db.publish.xml

6,调用脚本
:r .\Script.sql

script.sql是用添加-脚本-不在内部版本中类型的脚本

7,对于有复制分发的数据库,可以在发布-高级里面指定不更改复制对象
做法是:在其中一台db中指定更改复制对象,其他DB不更改