Quiero cambiar el nombre del esquema de la tabla Employees
en la base de datos. En la tabla actual, el Employees
nombre del esquema de la base de datos es dbo
Quiero cambiarlo exe
. Cómo puedo hacerlo ?
Ejemplo:
DE
dbo.Employees
A
exe.Employees
Intenté con esta consulta:
ALTER SCHEMA exe TRANSFER dbo.Employees
Pero esto me da un error:
No se puede alterar el esquema 'exe', porque no existe o no tiene permiso.
¿Qué me perdí?
sql
sql-server
tsql
schema
el campeón
fuente
fuente
create schema
: msdn.microsoft.com/en-US/library/ms189462%28v=sql.90%29.aspxRespuestas:
Crear esquema:
ALTERAR esquema:
fuente
sys.schemas
es una tabla que contiene todos los esquemas para la base de datos. El Exec ('...') simplemente ejecuta una llamada dinámica de SQL, en este caso es necesario porque un comando CREATE SCHEMA debe ser la primera instrucción en un lote de consulta y ejecutarlo como SQL dinámico le proporciona esto.Intenta abajo
fuente
set @sql = 'alter schema [' + @newschema + '] transfer [' + @oldschema + '].' + @table
para asegurarme de que algunas palabras / caracteres especiales no causen errores.Siempre tengo que usar los corchetes cuando uso la
ALTER SCHEMA
consulta en SQL, o recibo un mensaje de error.fuente
A través de SSMS, creé un nuevo esquema al:
Encontré esta publicación para cambiar el esquema, pero también recibía el mismo error de permisos al intentar cambiar al nuevo esquema. Tengo varias bases de datos en mi SSMS, así que intenté especificar la base de datos y funcionó:
fuente
Tu código es:
Intenté con esta consulta.
Solo escríbelo
create schema exe
y ejecútalofuente
fuente
Echa un vistazo a MSDN ...
CREATE SCHEMA
: http://msdn.microsoft.com/en-us/library/ms189462.aspxLuego
ALTER SCHEMA
: http://msdn.microsoft.com/en-us/library/ms173423.aspxO puede verificarlo en SO ...
¿Cómo muevo una tabla a un esquema en T-SQL?
fuente
Tenga mucho cuidado al renombrar objetos en sql. Puede hacer que las dependencias fallen si no está completamente alejado de lo que está haciendo. Dicho esto, esto funciona fácilmente (demasiado) para cambiar el nombre de las cosas siempre que tenga acceso adecuado al entorno:
fuente
exec sp_rename 'dbo.Employees', 'exe.Employees'
obtendrías el nombre [dbo]. [Exe.Employees]Asegúrese de estar en el contexto de base de datos correcto en SSMS. Recibí el mismo error que tú, pero sabía que el esquema ya existía. No me di cuenta de que estaba en el contexto 'MAESTRO'. ALTER funcionó después de cambiar el contexto a mi base de datos.
fuente
En caso de que alguien busque una versión inferior:
Para SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employess', @newowner = 'exe'
fuente