VS 2010 База данных Project Project Data на изменение имени столбца

StackOverflow https://stackoverflow.com/questions/3016913

Вопрос

Я проверяю новые функции проекта базы данных Visual Studio 2010 и хотите изменить имя столбца в таблице. Я изменил имя в сценарии создания и развернул его против базы данных. Сценарий, который был сгенерирован, просто бросил столбец и добавил новый столбец с правильным именем, но все данные были потеряны.

Есть ли настройка, которая не откажет данные столбца?

Я ищу решение «DataDude» к этому вопросу. (Если есть один)

PRINT N'Altering [dbo].[Users]...';

GO
ALTER TABLE [dbo].[Users] DROP COLUMN [TestX];

GO
ALTER TABLE [dbo].[Users]
    ADD [Testn] NVARCHAR (50) NULL;

GO

Спасибо, Кит

Это было полезно?

Решение

Используйте вид схемы, нажав вид -> Вид схемы базы данных

Разверните таблицы и его колонны.

Щелкните правой кнопкой мыши столбец и нажмите Refactor -> Переименуйте ...

Измените имя в поле «Новое имя» с предварительным просмотром Изменения в поле «Изменение».

Обратите внимание, что это изменяет не только имя столбца, но и сохраненные процедуры, которые могут ссылаться на этот столбец.

Внутри проекта базы данных создается файл RefactorLog, который отображает изменение имени.

Когда новая схема развернута в отношении существующей базы данных, оказывается, что DataDude смотрит на файл Refactorlog и таблицу dbo._refactorlog, чтобы определить, какие рефакторы должны быть обработаны против базы данных.

Вот код, который оно сгенерировал с использованием этой процедуры, изменение имени столбца, которое также было упомянуто в сохраненной процедуре:

EXECUTE sp_rename @objname = N'[dbo].[Users].[TestF]', @newname = N'TestG', @objtype = N'COLUMN';

GO
PRINT N'Altering [dbo].[ListUsers]...';

GO
ALTER PROCEDURE [dbo].[ListUsers]

AS
    SELECT [ID], [FirstName], [LastName], [TestG]
    FROM Users
RETURN 0
GO

Keith

Другие советы

Если таблица невелика, вы можете создать новую таблицу с правильными столбцами, а затем вставить из старой таблицы в новую, меняющуюся столбцы, как вы идете.

Если таблица большой, и вы не можете позволить себе время, ОЗУ, ни усилия, чтобы скопировать всю таблицу, вы можетеalter table add new_column тогдаupdate table set new_column=old_column тогдаalter table drop column old_column.

Синтаксис конечно упрощен.

Способ того, что проекты Visual Studio Database Database обрабатывают изменениях схемы, поддаются такого рода путаницы. Это очень трудно сказать, если вы просто переименованы в столбцу (и должны сохранить данные) или удалить столбец и добавить другой. Моя компания работала довольно некоторое время на продукте исходного контроля схемы базы данных, который имел все эти те же проблемы.

В конце концов, я пришел полагать, что лучший способ обрабатывать изменения схемы, который предлагается К. Скотт Аллен (на ссылках Джефф Этвуд). Отказ Эта серия статей должна устанавливать вас на курс для лучшего решения управления версией базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top