SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Pisanie zapytania w celu wygenerowania skryptów zmieniających nazwy niektórych kolumn w całej bazie danych

Chociaż zmiana nazwy kolumny tabeli nie jest trudna przy użyciu sp_rename , zmiana widoków odwołujących się i procedur składowanych nie jest trywialna bez pomocy narzędzi.

Poniższy T-SQL wygeneruje skrypt zmieniający nazwy wszystkich kolumn zaczynających się od małej litery. Jednak jest to kruche, ponieważ zmiany nazw zakończą się niepowodzeniem, gdy istnieją wymuszone zależności (np. obiekty powiązane ze schematem) i nie będą obsługiwać widoków, procesów. i in. 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;

Proponuję użyć SSDT , który jest dołączony do programu Visual Studio 2019 (w tym bezpłatnej wersji Community Edition). Utwórz nowy projekt bazy danych SQL Server, zaimportuj istniejącą bazę danych, zmień nazwę kolumny za pomocą opcji Refaktor-->Zmień nazwę, a następnie opublikuj projekt w docelowej bazie danych. Publikowanie zapewnia opcję natychmiastowego zastosowania zmian i/lub po prostu wygenerowania skryptu. Skrypt będzie zawierał DDL dla zmiany nazwy kolumny, podobnie jak zmieni nazwę kolumny we wszystkich obiektach odniesienia.

Jeśli kolumna ma alias z niepożądaną nazwą w widokach, procedurach itp., te aliasy również będą musiały zostać zmienione.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. „DATA” nie jest rozpoznawaną nazwą funkcji wbudowanej

  2. Połączenie SSMS z Sybase ASE

  3. SQL Server ISNUMERIC() Wyjaśnienie

  4. Wybrany jako ofiara impasu w prostym Add() -> SaveChanges()

  5. Gdzie jest SQL Server Management Studio 2012?