sql >> Databasteknik >  >> RDS >> Sqlserver

Det går inte att släppa schemat eftersom det inte finns eller om du inte har behörighet. - SQL Server / TSQL självstudie del 29

Scenario:

Du arbetar för Mortgage Company som SQL Server-utvecklare. Du har detta krav för att förbereda SQL-skript för att släppa schema. Du använder
Drop Schema SchemeName
påstående i utvecklingen SQL Server Instance och komma under felet.

Kan inte släppa schemat '', eftersom det inte finns eller att du inte har behörighet.

Vilka blir dina nästa steg?

Lösning:

Det kan finnas flera orsaker till ovanstående fel. För det första har du verkligen inte tillåtelse att släppa schemat. Du kollade med DBA och han bekräftade att du har alla behörigheter att ta denna ändring. Nu tittade du närmare på det och märkte att det finns objekt som tabeller, vyer etc. som använder detta schema.
Härifrån kan du föreslå två lösningar.
1) Släpp alla objekt Relaterat till Schema och släpp sedan Schemat (Det kan finnas scenarier där någon använde det här schemat och objekten. Nu behöver ingen längre använda schemat och objekt som är relaterade till det. Så du kommer att diskutera med ditt team och om de säger det förbereda släppskriptet för objekt och schema. kan använda objektutforskarens detaljfönster för att generera Drop Objects-skript.
2) Du vill behålla objekten och flytta dem till ett annat schema. Kanske dbo eller något nytt schema. Efter överföring objekten vill du ta bort schemat.
Nedan Fråga kan användas för att generera skript för att överföra objekt.
Declare @SourceSchema VARCHAR(100)
Declare @DestinationSchema VARCHAR(100)
SET @SourceSchema='TB'
SET @DestinationSchema='dbo'
Select 'Alter Schema ['+@DestinationSchema+'] Transfer '+@SourceSchema+'.['+name+']' 
from sys.objects
where schema_name(schema_id)=@SourceSchema
 
 
 Kopiera de genererade skripten och kör sedan i en databas. När du är klar kan du nu släppa schemat genom att använda Drop Schema SchemaName Påstående. 
  1. MySQL 'skapa schema' och 'skapa databas' - Finns det någon skillnad

  2. Migrera från MySQL Enterprise till MariaDB 10.3

  3. Långsam bulkinsats för bord med många index

  4. Datahantering med Python, SQLite och SQLAlchemy