Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nie można usunąć schematu , ponieważ nie istnieje lub nie masz uprawnień. - SQL Server / samouczek TSQL, część 29

Scenariusz:

Pracujesz dla Mortgage Company jako programista SQL Server. Masz to wymaganie, aby przygotować skrypt SQL do usunięcia schematu. Używasz
Drop Schema SchemeName
instrukcja w rozwojowej instancji SQL Server i otrzymanie poniżej błędu.

Nie można usunąć schematu '', ponieważ nie istnieje lub nie masz uprawnień.

Jakie byłyby Twoje następne kroki?

Rozwiązanie:

Przyczyn powyższego błędu może być kilka. Po pierwsze, naprawdę nie masz pozwolenia na porzucenie schematu. Skontaktowałeś się z DBA i potwierdził, że masz wszystkie uprawnienia do wprowadzenia tej zmiany. Teraz przyjrzałeś się temu dokładniej i zauważyłeś, że istnieją obiekty, takie jak tabele, widoki itp., które korzystają z tego schematu.
Tutaj możesz zaproponować dwa rozwiązania.
1) Usuń wszystkie obiekty Powiązane ze schematem, a następnie upuść schemat (Mogą istnieć scenariusze, w których ktoś używał tego schematu i obiektów. Teraz nikt nie musi już używać schematu i obiektów z nim związanych. Więc porozmawiasz ze swoim zespołem i jeśli tak powie, przygotuj skrypt upuszczania obiektów i schematu. może używać okien szczegółów eksploratora obiektów do generowania skryptów upuszczania obiektów.
2) Chcesz zachować obiekty i przenieść je do innego schematu. Może dbo lub jakikolwiek nowy schemat. Po przeniesieniu obiekty, które chcesz usunąć schemat.
Poniżej zapytania można użyć do wygenerowania skryptu do przesyłania obiektów.
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
 
 
 Skopiuj wygenerowane skrypty, a następnie uruchom w bazie danych. Po zakończeniu możesz teraz upuścić schemat za pomocą Drop Schema SchemaName Oświadczenie. 
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ISNUMERIC() działa w SQL Server

  2. Dostęp do zestawów wyników z poziomu Procedury składowane Transact-SQL SQL Server

  3. Co oznacza podwójne w serwerze sql?

  4. Magazyn zapytań SQL Server

  5. Łączna suma na serwerze MS Sql