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

Een query schrijven om enkele scripts te genereren om enkele kolommen in de hele database te hernoemen

Hoewel het hernoemen van de tabelkolom niet moeilijk is met sp_rename , is het wijzigen van de referentieweergaven en opgeslagen procedures niet triviaal zonder de hulp van tools.

De onderstaande T-SQL genereert een script om alle kolommen die met een kleine letter beginnen te hernoemen. Het is echter kwetsbaar omdat hernoemen zal mislukken wanneer er afgedwongen afhankelijkheden bestaan ​​(bijv. schemagebonden objecten) en geen views, 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;

Ik raad je aan om SSDT , dat bij Visual Studio 2019 wordt geleverd (inclusief de gratis Community-editie). Maak een nieuw SQL Server-databaseproject, importeer de bestaande database, wijzig de naam van de kolom met behulp van de optie Refactor-->Rename en publiceer het project vervolgens op de doeldatabase. Publish biedt de mogelijkheid om de wijzigingen direct toe te passen en/of alleen het script te genereren. Het script bevat DDL voor het hernoemen van de kolom, evenals de kolomnaam in alle verwijzende objecten.

Als de kolom een ​​alias heeft met de ongewenste naam in views, procs, enz., moeten die aliassen ook worden gewijzigd.




  1. geen vreemde sleutel in tabel als motor MyISAM is

  2. De laatste DBeaver EE-release in 2020

  3. Script alle opgeslagen procedures in Management Studio 2005

  4. #1146 - Tabel 'phpmyadmin.pma_recent' bestaat niet