sql >> Database >  >> RDS >> Sqlserver

Hoe het schema van alle tabellen, views en opgeslagen procedures in MSSQL te veranderen?

Ja, het is mogelijk.

Om het schema van een database-object te wijzigen, moet u het volgende SQL-script uitvoeren:

ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName

Waar ObjectName de naam kan zijn van een tabel, een weergave of een opgeslagen procedure. Het probleem lijkt de lijst te krijgen van alle database-objecten met een bepaalde shcema-naam. Gelukkig is er een systeemtabel met de naam sys.Objects die alle database-objecten opslaat. De volgende query genereert alle benodigde SQL-scripts om deze taak te voltooien:

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

Waar type 'U' staat voor gebruikerstabellen, staat 'V' voor weergaven en 'P' voor opgeslagen procedures.

Als u het bovenstaande script uitvoert, worden de SQL-opdrachten gegenereerd die nodig zijn om objecten van het ene schema naar het andere over te brengen. Zoiets als dit:

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;

Nu kunt u al deze gegenereerde zoekopdrachten uitvoeren om de overdracht te voltooien.



  1. MySQL boolean - de waarde omdraaien?

  2. SQL Server - Na invoegen/voor invoegen - terugdraaien

  3. Inloggen mislukt voor gebruiker 'NT AUTHORITY\NETWORK SERVICE'

  4. Foutcode 1111. Ongeldig gebruik van groepsfunctie