Cambiar El Nombre Del Esquema De La Tabla En SQL


Quiero cambiar el nombre del esquema de la tabla Employees en la base de datos. En la tabla actual Employees el nombre del esquema de la base de datos es dbo Quiero cambiarlo a exe. ¿Cómo puedo hacerlo ?

Ejemplo:

DE

dbo.Employees

A

exe.Employees

He intentado 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 existe tenga permiso.

¿Qué me perdí?

Author: AHiggins, 2013-03-18

10 answers

Crear Esquema :

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

ALTER Schema:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees
 195
Author: Pandian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-10 19:02:45

Intente abajo

declare @sql varchar(8000), @table varchar(1000), @oldschema varchar(1000), @newschema   varchar(1000)

  set @oldschema = 'dbo'
  set @newschema = 'exe'

 while exists(select * from sys.tables where schema_name(schema_id) = @oldschema)

  begin
      select @table = name from sys.tables 
      where object_id in(select min(object_id) from sys.tables where  schema_name(schema_id)  = @oldschema)

    set @sql = 'alter schema ' + @newschema + ' transfer ' + @oldschema + '.' + @table

   exec(@sql)
 end
 21
Author: DevelopmentIsMyPassion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-18 17:20:13
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

Siempre tengo que usar los corchetes cuando uso la consulta ALTER SCHEMA en SQL, o recibo un mensaje de error.

 14
Author: Lauren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-25 20:25:16

A través de SSMS, he creado un nuevo esquema de:

  • Al hacer clic en la carpeta de seguridad en el Explorador de objetos dentro de mi servidor,
  • esquemas pulsados con el botón derecho
  • Seleccionado "Nuevo esquema..."
  • Nombrado mi nuevo esquema (exe en su caso)
  • Hit OK

He encontrado este post para cambiar el esquema, pero también estaba recibiendo el mismo error de permisos al intentar cambiar al nuevo esquema. Tengo varias bases de datos listadas en mis SSMS, así que solo intenté especificar la base de datos y funcionó:

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 
 4
Author: Jason D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-15 22:47:05

Su código es:

FROM
 dbo.Employees
TO
 exe.Employees

He intentado con esta consulta.

ALTER SCHEMA exe TRANSFER dbo.Employees

Simplemente escribe create schema exe y ejecútalo

 3
Author: user2599599,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-08 11:51:14
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO

Para más detalles haga clic aquí

 3
Author: Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-02 05:59:19
 2
Author: Chains,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:31

Tenga mucho cuidado al renombrar objetos en sql. Puede hacer que las dependencias fallen si no está completamente ausente con 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:

exec sp_rename 'Nameofobject', 'ReNameofobject'
 0
Author: djangojazz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-18 17:17:31

Asegúrese de que está en el contexto de base de datos correcto en SSMS. Tengo el mismo error que tú, pero sabía que el esquema ya existía. No me di cuenta de que estaba en un contexto 'MAESTRO'. ALTER funcionó después de cambiar el contexto de mi base de datos.

 0
Author: billmack30,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-03 18:55:38

Para crear un Nuevo Esquema, siga los siguientes pasos:

1. Open your Database. 2. Route to Security folder. 3. Inside it is a folder named Schema. 4. Right click the schema folder> New Schema. 5. Add a Schema > Click OK.

Para modificar un esquema, ejecute el siguiente comando sql:

ALTER SCHEMA new_schema TRANSFER dbo.Employees

 0
Author: Tahir77667,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-11 10:08:54