【发布时间】:2014-09-03 20:33:45
【问题描述】:
有谁知道当数据表中有数据行时从数据库中删除现有列的最佳方法。
我尝试过的似乎不想工作。我在数据库项目中包含了一个预部署脚本
GO
if exists(select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'Mercury.dbo.Discounts' and COLUMN_NAME = 'ColumnToRemove')
BEGIN
ALTER TABLE Database.dbo.Table1 Drop Column ColumnToRemove
END
GO
然后在首先创建表的脚本中,我从创建表脚本中删除了相关列
dacpac 执行完成后,我得到以下信息
Initializing deployment (Start)
*** The column [dbo].[Table1].[ColumnToRemove] is being dropped, data loss could occur.
Initializing deployment (Complete)
Analyzing deployment plan (Start)
Analyzing deployment plan (Complete)
Updating database (Start)
An error occurred while the batch was being executed.
Updating database (Failed)
*** Could not deploy package.
Warning SQL72015: The column [dbo].[Table1].[ColumnToRemove] is being dropped, data loss could occur.
Error SQL72014: .Net SqlClient Data Provider: Msg 50000, Level 16, State 127, Line 6 Rows were detected. The schema update is terminating because data loss might occur.
Error SQL72045: Script execution error. The executed script:
IF EXISTS (SELECT TOP 1 1
FROM [dbo].[Table1])
RAISERROR (N'Rows were detected. The schema update is terminating because data loss might occur.', 16, 127)
WITH NOWAIT;
【问题讨论】:
-
如果可能发生数据丢失,尝试取消选中阻止增量部署,但我仍然收到相同的错误
标签: visual-studio-2013 database-project