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

At skrive en forespørgsel for at generere nogle scripts for at omdøbe nogle kolonner i hele databasen

Selvom det ikke er svært at omdøbe tabelkolonnen ved at bruge sp_rename , ændring af referencevisninger og lagrede procedurer er ikke-trivielt uden hjælp fra værktøjer.

T-SQL nedenfor vil generere script til at omdøbe alle kolonner, der starter med et lille bogstav. Det er dog skrøbeligt, idet omdøbninger vil mislykkes, når der eksisterer tvungne afhængigheder (f.eks. skemabundne objekter) og ikke vil håndtere visninger, 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;

Jeg foreslår, at du bruger SSDT , som er inkluderet i Visual Studio 2019 (inklusive den gratis Community Edition). Opret et nyt SQL Server-databaseprojekt, importer den eksisterende database, omdøb kolonnen ved hjælp af indstillingen Refactor-->Omdøb, og udgiv derefter projektet mod måldatabasen. Udgiv giver mulighed for at anvende ændringerne med det samme og/eller bare generere scriptet. Scriptet vil inkludere DDL for kolonnens omdøbning, ligesom det vil ændre kolonnenavnet i alle referenceobjekter.

Hvis kolonnen er aliasset med det uønskede navn i visninger, procedurer osv., skal disse aliasser også ændres.




  1. InnoDB:Forsøgte at åbne et tidligere åbnet tablespace

  2. Phpmyadmin-adgang nægtet efter ændring til ældre versioner af PHP/Apache på Wampserver

  3. Fatal fejl:Eksekveringstiden på 30 sekunder er overskredet i phpMyAdmin

  4. Kan ikke eksportere min .xlsx til min SQL-server 2008-database