Кто-нибудь знает, как лучше всего удалить существующий столбец из базы данных, когда в данных есть строки данных.База данных проекта базы данных Visual Studio 2013
То, что я пробовал, похоже, не хочет работать. Я включил предварительный сценарий развертывания с использованием проекта базы данных, что делает
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
Затем в сценарии, который создал таблицу, в первую очередь я удалил столбец вопрос из создания таблицы Script
Когда исполнения 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;
Возможный дубликат столбца [Разрешить (один раз) столбцов в проекте базы данных] (http://stackoverflow.com/questions/19031123/allow-once-column-drop-in-database-project) – drneel
Исправлено удаление инкремента блока развертывание, если может произойти потеря данных, и я все равно получаю ту же ошибку – DRobertE