sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan ændres skema for alle tabeller, visninger og lagrede procedurer i MSSQL

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.



  1. Sådan stopper jeg min rullefunktion, når MySql har hentet alle data

  2. 60 millioner poster, vælg poster fra en bestemt måned. Hvordan optimerer man databasen?

  3. Sådan finder du kolonnenavne for alle tabeller i alle databaser i SQL Server

  4. Ring til getNextException for at se årsagen:Sådan får du Hibernate/JPA til at vise DB-servermeddelelsen for en undtagelse