Ja, det er muligt.
For at ændre skemaet for et databaseobjekt skal du køre følgende SQL-script:
ALTER SCHEMA NewSchemaName TRANSFER OldSchemaName.ObjectName
Hvor ObjectName kan være navnet på en tabel, en visning eller en lagret procedure. Problemet ser ud til at være at få listen over alle databaseobjekter med et givet shcema-navn. Heldigvis er der en systemtabel ved navn sys.Objects, der gemmer alle databaseobjekter. Følgende forespørgsel vil generere alle nødvendige SQL-scripts for at fuldføre denne opgave:
VÆLG 'ALTER SCHEMA NewSchemaName TRANSFER [' + SysSchemas.Name + '].[' + DbObjects.Name + '];'FROM sys.Objects DbObjectsINNER JOIN sys.Schemas SysSchemas ON DbObjects.schema_id =SysSchemas. schema_idWHERE SysSchemas.Name ='OldSchemaName'AND (DbObjects.Type IN ('U', 'P', 'V'))
Hvor typen 'U' angiver brugertabeller, 'V' angiver visninger og 'P' angiver lagrede procedurer.
Kørsel af ovenstående script vil generere de SQL-kommandoer, der er nødvendige for at overføre objekter fra et skema til et andet. Noget som dette:
meget OldSchemaName.Polls_PollAnswer;Nu kan du køre alle disse genererede forespørgsler for at fuldføre overførselsoperationen.