sql >> Base de Datos >  >> RDS >> Sqlserver

No se puede descartar el esquema porque no existe o no tiene permiso. - Tutorial de SQL Server/TSQL Parte 29

Escenario:

Está trabajando para Mortgage Company como desarrollador de SQL Server. Obtuvo este requisito para preparar el script SQL para descartar el esquema. Usas
Drop Schema SchemeName
declaración en la instancia de desarrollo de SQL Server y aparece el siguiente error.

No se puede descartar el esquema '', porque no existe o no tiene permiso.

¿Cuáles serían tus próximos pasos?

Solución:

Podría haber un par de razones para el error anterior. Uno, realmente no tienes permiso para descartar el esquema. Verificó con DBA y él confirmó que tiene todos los permisos para realizar este cambio. Ahora lo investigó más a fondo y notó que hay objetos como tablas, vistas, etc. que usan este esquema.
Desde aquí puede proponer dos soluciones.
1) Suelte todos los objetos Relacionado con el esquema y luego descartar el esquema (Podría haber escenarios en los que alguien estuviera usando este esquema y objetos. Ahora ya nadie necesita usar el esquema y los objetos relacionados con él. Así que lo discutirá con su equipo y, si dicen eso, prepare el script de eliminación para objetos y esquema. Usted puede utilizar las ventanas de detalles del Explorador de objetos para generar secuencias de comandos de colocación de objetos.
2) Desea conservar los objetos y moverlos a un esquema diferente. Tal vez dbo o cualquier esquema nuevo. Después de transferir los objetos, desea eliminar el esquema.
La siguiente consulta se puede usar para generar un 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 los scripts generados y luego ejecútelos en una base de datos. Una vez hecho esto, ahora puede eliminar el esquema usando Drop Schema SchemaName Declaración.