Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Não é possível descartar o esquema porque ele não existe ou você não tem permissão. - Tutorial SQL Server / TSQL Parte 29

Cenário:

Você está trabalhando para a Mortgage Company como desenvolvedor do SQL Server. Você tem este requisito para preparar o script SQL para descartar o esquema. Você usa
Soltar Schema SchemeName
instrução em desenvolvimento SQL Server Instance e erro abaixo.

Não é possível descartar o esquema '', pois ele não existe ou você não tem permissão.

Quais seriam seus próximos passos?

Solução:

Pode haver algumas razões para o erro acima. Um, você realmente não tem permissão para descartar o Schema. Você verificou com o DBA e ele confirmou que você tem todas as permissões para fazer essa alteração. Agora você olhou mais para ele e notou que existem objetos como tabelas, visualizações etc. que estão usando este esquema.
A partir daqui você pode propor duas soluções.
1) Solte todos os objetos Relacionado ao Esquema e, em seguida, Elimine o Esquema (Pode haver cenários em que alguém estava usando este esquema e objetos. Agora ninguém mais precisa usar o esquema e objetos relacionados a ele. Então você discutirá com sua equipe e se eles disserem que prepare o script de descarte para objetos e esquema. Você pode usar as janelas Detalhes do Pesquisador de Objetos para gerar scripts de soltar objetos.
2) Você deseja manter os objetos e movê-los para um esquema diferente. Talvez dbo ou qualquer novo esquema. Após transferir os objetos, você deseja excluir o esquema.
Abaixo Query pode ser usado para gerar script para Transferir objetos.
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
 
 
 Copie os scripts gerados e execute em um banco de dados. Uma vez feito, agora você pode descartar o Schema usando Drop Schema SchemaName Demonstração.