table Como renomear uma tabela no SQL Server?



renomear coluna select mysql (6)

Ao usar sp_rename que funciona como nas respostas acima, verifique também quais objetos são afetados após a renomeação, que referenciam essa tabela, porque você precisa alterá-los também

Eu peguei um exemplo de código para dependências de tabelas no blog de Pinal Dave here

USE AdventureWorks
GO
SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'Customer'

Então, todos esses objetos dependentes precisam ser atualizados também

Ou use algum add-in, se você puder, alguns deles têm recurso para renomear o objeto, e todos dependem, ent objetos também

A consulta SQL que eu usei é:

ALTER TABLE oldtable RENAME TO newtable;

Mas isso me dá um erro.

Servidor: Mensagem 156, nível 15, estado 1, linha 1
Sintaxe incorreta perto da palavra-chave 'TO'.


Answer #1

Isso é o que eu uso:

EXEC sp_rename 'MyTable', 'MyTableNewName';

Answer #2

Para renomear uma tabela no SQL Server, use o comando sp_rename :

exec sp_rename 'schema.old_table_name', 'new_table_name'

Answer #3

Para renomear uma coluna:

sp_rename 'table_name.old_column_name', 'new_column_name' , 'COLUMN';

Para renomear uma tabela:

sp_rename 'old_table_name','new_table_name';

Answer #4

Se você tentar exec sp_rename e receber um erro LockMatchID, pode ser útil adicionar uma instrução [database] de uso primeiro:

eu tentei

 exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
 -- Invalid EXECUTE statement using object "Object", method "LockMatchID".

O que eu tive que fazer para corrigi-lo foi reescrevê-lo para:

use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';

Answer #5

Nada funcionou de proposto aqui .. Então, apenas pored os dados em nova tabela

SELECT * 
INTO [acecodetable].['PSCLineReason']
FROM [acecodetable].['15_PSCLineReason'];

talvez seja útil para alguém ..

No meu caso não reconhecia o novo esquema também o dbo era o dono ..

ATUALIZAR

EXECUTE sp_rename N'[acecodetable].[''TradeAgreementClaim'']', N'TradeAgreementClaim';

Trabalhou para mim. Eu encontrei a partir do script gerado automaticamente ao atualizar o PK para uma das tabelas. Desta forma, reconheceu o novo esquema também.





alter-table