Por que o SQL Server Management Studio gera duas renomeações em um script de mudança?

2

Acabei de criar um script de alteração usando o SSMS 2008 Express para renomear duas colunas em uma tabela. No entanto, o script de mudança contém quatro renomeações, usando um nome temporário intermediário. Por que isso acontece?

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' 
    
por ProfK 11.10.2010 / 13:55

1 resposta

5

Eu não acho que haja uma boa resposta para sua pergunta, além do fato de que ferramentas geradoras automáticas de scripts às vezes precisam sacrificar a eficiência para garantir que não causem problemas em casos estranhos.

Nenhuma informação privilegiada aqui, mas talvez eles estejam representando algo como o seguinte cenário:

O CEO foi a um seminário inspirador e saiu com a ideia maluca de redefinir como a empresa é organizada, incluindo o nome de cada "nível":

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

Se você simplesmente gerou scripts sp_rename retos assim:

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

O segundo falhará, porque um campo chamado "office" já existia. Nesse caso, você poderia consertar isso, ordenando-os para que o terceiro renomeie antes do segundo, mas e se seus nomes forem realmente:

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

Então não há ordenação que permita executar a renomeação sem erro. Você teria que atribuir nomes temporários exclusivos primeiro.

    
por 13.10.2010 / 00:26