我有一个在构建过程中自动发布的 SQL Server Data Tools (VS2012) 项目。一列最近从 更新int到decimal(18,4)。由于此更改,发布失败并显示错误
(49,1): SQL72014: .Net SqlClient Data Provider: Msg 50000, Level 16, State 127, Line 6 检测到行。架构更新正在终止,因为可能会发生数据丢失。(44,0): SQL72045: 脚本执行错误。执行的脚本: /* The type for column QuantityReceived in table [dbo].[Reconciliation_Receiving] 当前为 INT NOT NULL 但正在更改为 DECIMAL (18, 4) NOT NULL。可能会发生数据丢失。*/
IF EXISTS (select top 1 1 from [dbo].[Reconciliation_Receiving]) RAISERROR(检测到 N'Rows。由于可能发生数据丢失,模式更新正在终止。', 16, 127) WITH NOWAIT 批处理时发生错误被处决。
我明白为什么我会收到该错误,并且我知道可以通过禁用“如果可能发生数据丢失则阻止增量部署”标志来解决它。但是,非常强烈反对禁用该功能,因此它不会是一个可接受的解决方案。
我能想到的唯一其他解决方案是执行以下操作:
不过,这似乎非常笨拙且效率低下。
有更好的选择吗?
我也曾试图绕过该标志,但已经站在你的同事一边,现在尝试“正确”处理这些问题。(稍微)不那么笨拙的路线是使用部署前和部署后脚本来完成重命名工作。
根据目标的性质,您当然可能需要处理删除和重新创建外键约束。
| 归档时间: |
|
| 查看次数: |
25909 次 |
| 最近记录: |