Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да промените схемата на всички таблици, изгледи и съхранени процедури в MSSQL

Да, възможно е.

За да промените схемата на обект на база данни, трябва да изпълните следния SQL скрипт:

ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName

Където ObjectName може да бъде името на таблица, изглед или съхранена процедура. Проблемът изглежда е получаването на списъка с всички обекти на база данни с дадено име на схема. За щастие има системна таблица с име sys.Objects, която съхранява всички обекти на базата данни. Следната заявка ще генерира всички необходими SQL скриптове за изпълнение на тази задача:

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'))

Където тип 'U' обозначава потребителски таблици, 'V' обозначава изгледи и 'P' обозначава съхранени процедури.

Изпълнението на горния скрипт ще генерира SQL командите, необходими за прехвърляне на обекти от една схема в друга. Нещо подобно:

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;

Сега можете да стартирате всички тези генерирани заявки, за да завършите операцията по прехвърляне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LINQ към SQL Всеки N-ти ред от таблицата

  2. Намерете максимална стойност и покажете съответната стойност от различно поле в SQL сървър

  3. SQL Server - Нуждаете се от присъединяване, но където НЕ е равно на

  4. Предаване на параметър на xml низ към съхранената процедура на SQL Server

  5. Вмъкване на големи обектни данни в Salesforce.com от SQL Server