Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zmienić schemat wszystkich tabel, widoków i procedur składowanych w MSSQL?

Tak, to możliwe.

Aby zmienić schemat obiektu bazy danych, musisz uruchomić następujący skrypt SQL:

ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName

Gdzie ObjectName może być nazwą tabeli, widoku lub procedury składowanej. Wydaje się, że problemem jest uzyskanie listy wszystkich obiektów bazy danych o podanej nazwie shcema. Na szczęście istnieje tabela systemowa o nazwie sys.Objects, która przechowuje wszystkie obiekty bazy danych. Następujące zapytanie wygeneruje wszystkie potrzebne skrypty SQL do wykonania tego zadania:

SELECT 'ALTER SCHEMA NewSchemaName TRANSFER [' + SysSchemas.Name + '].[' + DbObjects.Name + '];'
FROM sys.Objects DbObjects
INNER JOIN sys.Schemas SysSchemas ON DbObjects.schema_id = SysSchemas.schema_id
WHERE SysSchemas.Name = 'OldSchemaName'
AND (DbObjects.Type IN ('U', 'P', 'V'))

Gdzie typ „U” oznacza tabele użytkownika, „V” oznacza widoki, a „P” oznacza procedury składowane.

Uruchomienie powyższego skryptu wygeneruje polecenia SQL potrzebne do przeniesienia obiektów z jednego schematu do drugiego. Coś takiego:

ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.CONTENT_KBArticle;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Proc_Analytics_Statistics_Delete;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Proc_CMS_QueryProvider_Select;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.COM_ShoppingCartSKU;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.CMS_WebPart;
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.Polls_PollAnswer;

Teraz możesz uruchomić wszystkie wygenerowane zapytania, aby zakończyć operację przesyłania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wycofanie błędu zgłaszania zagnieżdżonych transakcji w TSQL

  2. Błąd sqlserver_ado nie jest dostępnym zapleczem bazy danych (PyISAPIe w IIS)

  3. Zapytanie SQL w wielu kolumnach przy użyciu funkcji odrębnej tylko w jednej kolumnie

  4. Zastąpić domyślną alfabetyczną wartość ORDER BY za pomocą UNION z 2+ tabel?

  5. wybór operatora optymalizatora zapytań - pętle zagnieżdżone vs dopasowanie hash (lub scalanie)