Quero alterar o nome do esquema da tabela Employees
no banco de dados. Na tabela atual, o Employees
nome do esquema do banco de dados é que dbo
eu quero alterá-lo exe
. Como eu posso fazer isso ?
Exemplo:
DE
dbo.Employees
PARA
exe.Employees
Eu tentei com esta consulta:
ALTER SCHEMA exe TRANSFER dbo.Employees
Mas isso me dá um erro:
Não é possível alterar o esquema 'exe', porque ele não existe ou você não tem permissão.
Do que eu senti falta?
sql
sql-server
tsql
schema
o campeão
fonte
fonte
create schema
: msdn.microsoft.com/pt-BR/library/ms189462%28v=sql.90%29.aspxRespostas:
Criar esquema:
Esquema ALTER:
fonte
sys.schemas
é uma tabela que contém todos os esquemas do banco de dados. O Exec ('...') apenas executa uma chamada SQL dinâmica; nesse caso, é necessário porque um comando CREATE SCHEMA deve ser a primeira instrução em um lote de consulta e a execução como SQL dinâmico permite isso.Experimente abaixo
fonte
set @sql = 'alter schema [' + @newschema + '] transfer [' + @oldschema + '].' + @table
para garantir que algumas palavras / caracteres especiais não causem erros.Eu sempre tenho que usar os colchetes quando uso a
ALTER SCHEMA
consulta no SQL ou recebo uma mensagem de erro.fonte
Por meio do SSMS, criei um novo esquema:
Encontrei este post para alterar o esquema, mas também estava recebendo o mesmo erro de permissão ao tentar mudar para o novo esquema. Como tenho vários bancos de dados listados no meu SSMS, tentei especificar o banco de dados e funcionou:
fonte
Seu código é:
Eu tentei com esta consulta.
Apenas escreva
create schema exe
e executefonte
fonte
Confira MSDN ...
CREATE SCHEMA
: http://msdn.microsoft.com/en-us/library/ms189462.aspxEntão
ALTER SCHEMA
: http://msdn.microsoft.com/en-us/library/ms173423.aspxOu você pode conferir no SO ...
Como mover uma tabela para um esquema no T-SQL
fonte
Tenha muito cuidado ao renomear objetos no sql. Você pode causar falhas nas dependências, se você não estiver totalmente afastado do que está fazendo. Dito isto, isso funciona facilmente (demais) para renomear coisas, desde que você tenha acesso adequado ao ambiente:
fonte
exec sp_rename 'dbo.Employees', 'exe.Employees'
você teria o nome [dbo] [exe.Employees].Verifique se você está no contexto de banco de dados correto no SSMS. Obtive o mesmo erro que você, mas eu sabia que o esquema já existia. Não sabia que eu estava no contexto 'MASTER'. O ALTER funcionou depois que eu mudei o contexto para meu banco de dados.
fonte
No caso, alguém procurando uma versão inferior -
Para o SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employess', @newowner = 'exe'
fonte