sql >> Databasteknik >  >> Database Tools >> SSMS

Att skriva en fråga för att generera några skript för att byta namn på några kolumner i hela databasen

Även om det inte är svårt att byta namn på tabellkolumnen med sp_rename , att ändra referensvyer och lagrade procedurer är inte trivialt utan hjälp av verktyg.

T-SQL nedan kommer att generera skript för att byta namn på alla kolumner som börjar med en liten bokstav. Den är dock ömtålig genom att namnbyten kommer att misslyckas när påtvingade beroenden existerar (t.ex. schemabundna objekt) och kommer inte att hantera vyer, procs. et. al.

SELECT 
      N'EXEC sp_rename ''' 
    + QUOTENAME(s.name) + N'.' + QUOTENAME(t.name) + N'.' + QUOTENAME(c.name) 
    + ''', ''' + UPPER(LEFT(c.name, 1)) + SUBSTRING(c.name,2,127) + ''', ''COLUMN'';'
FROM sys.schemas AS s
JOIN sys.tables AS t ON t.schema_id = s.schema_id
JOIN sys.columns AS c ON c.object_id = t.object_id
WHERE 
    LEFT(c.name, 1) COLLATE Latin1_General_CS_AS <> UPPER(LEFT(c.name, 1)) COLLATE Latin1_General_CS_AS
    AND t.is_ms_shipped = 0;

Jag föreslår att du använder SSDT , som ingår i Visual Studio 2019 (inklusive den kostnadsfria Community Edition). Skapa ett nytt SQL Server-databasprojekt, importera den befintliga databasen, byt namn på kolumnen med alternativet Refactor-->Rename och publicera sedan projektet mot måldatabasen. Publicera ger möjlighet att tillämpa ändringarna omedelbart och/eller bara generera skriptet. Skriptet kommer att inkludera DDL för att byta namn på kolumnen liksom att ändra kolumnnamnet i alla refererande objekt.

Om kolumnen är aliasad med det oönskade namnet i vyer, processer, etc., måste dessa alias också ändras.




  1. Hur använder man centrala kolumner i phpmyadmin?

  2. hur man väljer de 5 senaste raden från min mysql

  3. ALTER DATABASE misslyckades eftersom ett lås inte kunde placeras på databasen

  4. iAd visar inte annonser i mitt godkända spel