我是否需要在 post 部署脚本中为多个 SQL 操作编写 TRANSACTION 代码?
Do I need to code TRANSACTIONs for multiple SQL operations in my post-deployment scripts?
我正在使用
- SQL 服务器 2008(不是 R2)
- Visual Studio 2012 高级
- SQL 服务器 数据库 Project/SQL 服务器
数据工具 (SSDT)
当我的 post 部署脚本中有多个 SQL 语句(CREATE、UPDATE、DELETE)时,是否需要使用 TRANSACTION?当我查看由 SSDT 生成的部署脚本时,据我所知,SSDT 仅使用它根据 diff 脚本生成的 SQL 的事务。
如果您希望所有 操作在任何 操作失败时回滚,请将所有操作包装在一个事务中。否则,如果它们中的任何一个遇到故障,该操作将停止并且任何先前的更改将保留。否则,为了清楚起见,您可以只用分号结束每个操作,尽管 SQL 服务器(目前)不需要它。
你是正确的,SSDT 创建的事务只包装了部署的差异部分,而不是 pre 和 post 脚本。
这是否是 "issue" 取决于您在 post 部署中所做的事情。
如果您的 post 部署脚本是
- 已测试
- 幂等
这应该不会给您带来太多问题。
我正在使用
- SQL 服务器 2008(不是 R2)
- Visual Studio 2012 高级
- SQL 服务器 数据库 Project/SQL 服务器 数据工具 (SSDT)
当我的 post 部署脚本中有多个 SQL 语句(CREATE、UPDATE、DELETE)时,是否需要使用 TRANSACTION?当我查看由 SSDT 生成的部署脚本时,据我所知,SSDT 仅使用它根据 diff 脚本生成的 SQL 的事务。
如果您希望所有 操作在任何 操作失败时回滚,请将所有操作包装在一个事务中。否则,如果它们中的任何一个遇到故障,该操作将停止并且任何先前的更改将保留。否则,为了清楚起见,您可以只用分号结束每个操作,尽管 SQL 服务器(目前)不需要它。
你是正确的,SSDT 创建的事务只包装了部署的差异部分,而不是 pre 和 post 脚本。
这是否是 "issue" 取决于您在 post 部署中所做的事情。
如果您的 post 部署脚本是
- 已测试
- 幂等
这应该不会给您带来太多问题。