Почему SQL Server Management Studio генерирует два переименования в сценарии изменений?

Я только что создал сценарий изменения с использованием SSMS 2008 Express для переименования двух столбцов в таблице. Однако скрипт изменения содержит четыре переименования с использованием промежуточного временного имени. Почему это?

EXECUTE sp_rename N'dbo.PerformanceCategories.WeekToDateFormula', N'Tmp_WeekToDateFormulaActual_4', 'COLUMN' 
GO
EXECUTE sp_rename N'dbo.PerformanceCategories.MonthToDateFormula', N'Tmp_MonthToDateFormulaActual_5', 'COLUMN' 
GO
EXECUTE sp_rename N'dbo.PerformanceCategories.Tmp_WeekToDateFormulaActual_4', N'WeekToDateFormulaActual', 'COLUMN' 
GO
EXECUTE sp_rename N'dbo.PerformanceCategories.Tmp_MonthToDateFormulaActual_5', N'MonthToDateFormulaActual', 'COLUMN' 

1 ответ

Я не думаю, что есть хороший ответ на ваш вопрос, кроме того факта, что инструментальные средства автоматической генерации сценариев иногда должны жертвовать эффективностью, чтобы убедиться, что они не вызывают проблем в странных угловых случаях.

Здесь нет внутренней информации, но, возможно, они объясняют что-то вроде следующего сценария:

Генеральный директор пошел на вдохновляющий семинар и пришел с сумасшедшей идеей переопределить, как организована компания, включая то, что назван каждый "уровень":

Company  >>  Section
Division >>  Office
Office   >>  Branch

Если вы просто сгенерировали прямые скрипты sp_rename следующим образом:

sp_rename 'org.Company',  'Section', 'COLUMN' 
sp_rename 'org.Division', 'Office',  'COLUMN' 
sp_rename 'org.Office',   'Branch',  'COLUMN' 

Второй будет неудачным, потому что поле с именем "office" уже существует. В этом случае вы можете исправить это, упорядочив их так, чтобы 3-е переименование предшествовало второму, но что, если ваши переименования были на самом деле:

Address1  >>  Address2
Address2  >>  Address3
Address3  >>  Address1

Тогда нет порядка, который позволил бы вам выполнить переименование без ошибок. Сначала вам нужно назначить уникальные временные имена.

Другие вопросы по тегам