sql >> Databáze >  >> Database Tools >> SSMS

Psaní dotazu pro generování některých skriptů pro přejmenování některých sloupců v celé databázi

I když přejmenování sloupce tabulky není obtížné pomocí sp_rename , změna odkazujících pohledů a uložených procedur není triviální bez pomoci nástrojů.

T-SQL níže vygeneruje skript pro přejmenování všech sloupců, které začínají malým písmenem. Je však křehký v tom, že přejmenování selže, pokud existují vynucené závislosti (např. objekty vázané na schéma) a nezpracuje pohledy, procesy. 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;

Navrhuji, abyste použili SSDT , která je součástí sady Visual Studio 2019 (včetně bezplatné edice Community Edition). Vytvořte nový projekt databáze SQL Server, importujte existující databázi, přejmenujte sloupec pomocí možnosti Refactor-->Rename a poté projekt publikujte v cílové databázi. Publikovat poskytuje možnost okamžitě použít změny a/nebo pouze vygenerovat skript. Skript bude obsahovat DDL pro přejmenování sloupce stejně jako změnu názvu sloupce ve všech odkazujících objektech.

Pokud má sloupec v zobrazeních, procesech atd. alias s nežádoucím názvem, bude nutné tyto aliasy také změnit.




  1. Vyhledejte v databázi PHPMYADMIN podobné záznamy

  2. ID uživatele a heslo mysql serveru wamp

  3. Dotaz BCP z virtuálního počítače Azure:SQLState =37000, NativeError =40515 Odkaz na název databáze a/nebo serveru v 'DBName.dbo.TableName' není podporován

  4. Nastavení hesla pro phpMyAdmin