sp_rename (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Ponto de extremidade de análises SQL no Microsoft Fabric Warehouse no Microsoft Fabric
Altera o nome de um objeto criado pelo usuário no banco de dados atual. Esse objeto pode ser uma tabela, um índice, uma coluna, um tipo de dados de alias ou um tipo de dados Microsoft
Tipo definido pelo usuário CLR (Common Language Runtime) do .NET Framework.
Importante
Não há suporte para alguns objetos do sistema e sintaxe Transact-SQL em pools de SQL sem servidor no Azure Synapse Analytics, incluindo este artigo. Para obter mais informações, visite o suporte do T-SQL.
Cuidado
A alteração de qualquer parte de um nome de objeto pode quebrar scripts e procedimentos armazenados. Recomendamos que você não use essa instrução para renomear procedimentos armazenados, gatilhos, funções definidas pelo usuário ou exibições; em vez disso, solte o objeto e recrie-o com o novo nome.
Convenções de sintaxe de Transact-SQL
Sintaxe
Sintaxe para sp_rename
no SQL Server e no Banco de Dados SQL do Azure:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
Sintaxe para sp_rename
(versão prévia) no Azure Synapse Analytics:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
, [ @objtype = ] 'COLUMN'
Sintaxe para sp_rename
no Microsoft Fabric:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'
[ , [ @objtype = ] 'OBJECT' ]
Argumentos
@objname [ = ] 'object_name'
O nome qualificado ou não qualificado atual do objeto de usuário ou tipo de dados. Se o objeto a ser renomeado for uma coluna em uma tabela, object_name deverá estar no formulário table.column ou schema.table.column. Se o objeto a ser renomeado for um índice, object_name deverá estar no formato table.index ou schema.table.index. Se o objeto a ser renomeado for uma restrição, object_name deverá estar no formato schema.constraint.
As aspas serão necessárias apenas se um objeto qualificado estiver especificado. Se um nome completamente qualificado, incluindo um nome de banco de dados, for fornecido, o nome do banco de dados deverá ser o nome do banco de dados atual. object_name é nvarchar(776), sem padrão.
@newname [ = ] 'new_name'
O novo nome do objeto especificado. new_name deve ser um nome de uma parte e deve seguir as regras para identificadores. newname é sysname, sem padrão.
Os nomes de gatilho não podem começar com # ou ##.
Aplica-se ao Warehouse no Microsoft Fabric:
- Os nomes de esquema não podem conter
/
ou\
ou terminar com um.
. - Os nomes de tabela não podem conter
/
ou\
ou terminar com um.
.
@objtype [ = ] 'object_type'
O tipo de objeto que está sendo renomeado. object_type é varchar(13), com um padrão de NULL
, e pode ser um desses valores.
Valor | Descrição |
---|---|
COLUMN |
Uma coluna a ser renomeada. |
DATABASE |
Um banco de dados definido pelo usuário. Esse tipo de objeto é necessário quando um banco de dados é renomeado. |
INDEX |
Um índice definido pelo usuário. Renomear um índice com estatísticas automaticamente também renomeia as estatísticas. |
OBJECT |
Um item de um tipo rastreado em sys.objects. Por exemplo, OBJECT pode ser usado para renomear objetos, inclusive restrições (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), tabelas de usuário e regras. |
STATISTICS |
Aplica-se a: SQL Server 2012 (11.x) e posterior e Banco de Dados SQL do Azure. As estatísticas criadas explicitamente por um usuário ou criadas implicitamente com um índice. Renomear as estatísticas de um índice automaticamente também renomeia o índice. |
USERDATATYPE |
Um tipo CLR definido pelo usuário adicionado executando CREATE TYPE ou sp_addtype. |
Aplica-se ao: Azure Synapse Analytics
- Em
sp_rename
(versão prévia) do Azure Synapse Analytics,COLUMN
há um valor obrigatório que especifica que o tipo de objeto a ser renomeado é uma coluna e sempre deve ser incluído nasp_rename
instrução. Uma coluna só poderá ser renomeada se não for uma coluna de distribuição.sp_rename
só pode ser usado para renomear aCOLUMN
em um objeto de usuário.
Aplica-se a: Microsoft Fabric
- In
sp_rename
para o Warehouse no Microsoft Fabric,OBJECT
é o único valor com suporte para @objtype. - In
sp_rename
para o ponto de extremidade de análise SQL no Microsoft Fabric,OBJECT
é o único valor com suporte para @objtype. As tabelas não podem ser renomeadas.
Valores do código de retorno
0
(êxito) ou um número diferente de zero (falha)
Comentários
Aplica-se ao SQL Server (todas as versões com suporte) e ao Banco de Dados SQL do Azure:
sp_rename
renomeia automaticamente o índice associado sempre que uma restrição PRIMARY KEY ou UNIQUE é renomeada. Se um índice renomeado estiver vinculado a uma restrição PRIMARY KEY, a restrição PRIMARY KEY também será renomeada automaticamente porsp_rename
.sp_rename
pode ser usado para renomear índices XML primários e secundários.Renomear um procedimento armazenado, uma função, uma exibição ou um gatilho não alterará o nome do objeto correspondente na coluna de definição da exibição do catálogo sys.sql_modules ou obtido usando a função interna OBJECT_DEFINITION . Portanto, recomendamos que
sp_rename
não seja usado para renomear esses tipos de objeto. Em vez disso, cancele e recrie o objeto com o nome novo.
Aplica-se ao SQL Server (todas as versões com suporte), Banco de Dados SQL do Azure e Azure Synapse Analytics:
Renomear um objeto, como uma tabela ou coluna, não renomeará automaticamente as referências a esse objeto. É necessário modificar manualmente todos os objetos que fazem referência ao objeto renomeado. Por exemplo, se você renomear uma coluna de tabela e aquela coluna for referenciada em um gatilho, será necessário modificar o gatilho para que ele reflita o nome novo da coluna. Use sys.sql_expression_dependencies para listar as dependências do objeto antes de renomeá-lo.
Renomear uma coluna não atualiza automaticamente os metadados de objetos que selecionem todas as colunas (usando o
*
) dessa tabela. Por exemplo, se você renomear uma coluna de tabela e essa coluna for referenciada por uma exibição ou função não associada ao esquema que SELECTs todas as colunas (usando o*
), os metadados da exibição ou função continuarão a refletir o nome da coluna original. Atualize os metadados usando sp_refreshsqlmodule ou sp_refreshview.Você só pode alterar o nome de um objeto ou tipo de dados no banco de dados atual. Os nomes da maioria dos tipos de dados do sistema e objetos do sistema não podem ser alterados.
Se você usar mais de 128 caracteres para o novo nome, somente os primeiros 128 caracteres serão usados e o restante será truncado.
Aplica-se ao Azure Synapse Analytics:
- No Azure Synapse Analytics,
sp_rename
está em versão prévia para pools de SQL dedicados.
Permissões
Para renomear objetos, colunas e índices, a permissão ALTER é necessária no objeto. Para renomear tipos de usuário, a permissão CONTROL é necessária no tipo. Para renomear um banco de dados, é necessária a associação nas funções de servidor fixas sysadmin ou dbcreator. Para renomear uma tabela contábil, é necessária a permissão ALTER LEDGER.
Exemplos
R. Renomear uma tabela
O exemplo a seguir renomeia a tabela SalesTerritory
como SalesTerr
no esquema Sales
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO
B. Renomear uma coluna
O exemplo a seguir renomeia a TerritoryID
SalesTerritory
coluna na tabela para TerrID
.
USE AdventureWorks2022;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
C. Renomear um índice
O exemplo a seguir renomeia o índice IX_ProductVendor_VendorID
como IX_VendorID
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
D. Renomear um tipo de dados de alias
O exemplo a seguir renomeia o tipo de dados de alias Phone
como Telephone
.
USE AdventureWorks2022;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO
E. Restrições de renomeação
Os exemplos a seguir renomeiam uma restrição PRIMARY KEY, uma restrição CHECK e uma restrição FOREIGN KEY. Ao renomear uma restrição, o esquema ao qual ela pertence deve ser especificado.
USE AdventureWorks2022;
GO
-- Return the current Primary Key, Foreign Key and Check constraints for the Employee table.
SELECT name, SCHEMA_NAME(schema_id) AS schema_name, type_desc
FROM sys.objects
WHERE parent_object_id = (OBJECT_ID('HumanResources.Employee'))
AND type IN ('C','F', 'PK');
GO
-- Rename the primary key constraint.
EXEC sp_rename 'HumanResources.PK_Employee_BusinessEntityID', 'PK_EmployeeID';
GO
-- Rename a check constraint.
EXEC sp_rename 'HumanResources.CK_Employee_BirthDate', 'CK_BirthDate';
GO
-- Rename a foreign key constraint.
EXEC sp_rename 'HumanResources.FK_Employee_Person_BusinessEntityID', 'FK_EmployeeID';
-- Return the current Primary Key, Foreign Key and Check constraints for the Employee table.
SELECT name, SCHEMA_NAME(schema_id) AS schema_name, type_desc
FROM sys.objects
WHERE parent_object_id = (OBJECT_ID('HumanResources.Employee'))
AND type IN ('C','F', 'PK');
GO
name schema_name type_desc
------------------------------------- ------------------ ----------------------
FK_Employee_Person_BusinessEntityID HumanResources FOREIGN_KEY_CONSTRAINT
PK_Employee_BusinessEntityID HumanResources PRIMARY_KEY_CONSTRAINT
CK_Employee_BirthDate HumanResources CHECK_CONSTRAINT
CK_Employee_MaritalStatus HumanResources CHECK_CONSTRAINT
CK_Employee_HireDate HumanResources CHECK_CONSTRAINT
CK_Employee_Gender HumanResources CHECK_CONSTRAINT
CK_Employee_VacationHours HumanResources CHECK_CONSTRAINT
CK_Employee_SickLeaveHours HumanResources CHECK_CONSTRAINT
(7 row(s) affected)
name schema_name type_desc
------------------------------------- ------------------ ----------------------
FK_Employee_ID HumanResources FOREIGN_KEY_CONSTRAINT
PK_Employee_ID HumanResources PRIMARY_KEY_CONSTRAINT
CK_BirthDate HumanResources CHECK_CONSTRAINT
CK_Employee_MaritalStatus HumanResources CHECK_CONSTRAINT
CK_Employee_HireDate HumanResources CHECK_CONSTRAINT
CK_Employee_Gender HumanResources CHECK_CONSTRAINT
CK_Employee_VacationHours HumanResources CHECK_CONSTRAINT
CK_Employee_SickLeaveHours HumanResources CHECK_CONSTRAINT
(7 row(s) affected)
F. Renomear estatísticas
O exemplo a seguir cria um objeto de estatísticas chamado contactMail1
e renomeia a estatística usando NewContact
sp_rename
. Quando você renomeia estatísticas, o objeto deve ser especificado no formato 'schema.table.statistics_name''.
CREATE STATISTICS ContactMail1
ON Person.Person (BusinessEntityID, EmailPromotion)
WITH SAMPLE 5 PERCENT;
EXEC sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';
Exemplos: Azure Synapse Analytics
G. Renomear uma coluna
O exemplo a seguir renomeia a c1
table1
coluna na tabela para col1
.
Observação
Esse recurso do Azure Synapse Analytics ainda está em versão prévia para pools de SQL dedicados e atualmente está disponível apenas para objetos no dbo
esquema.
CREATE TABLE table1 (c1 INT, c2 INT);
EXEC sp_rename 'table1.c1', 'col1', 'COLUMN';
GO
H. Renomear um objeto
O exemplo a seguir renomeia a tabela dbo.table1
para dbo.table2
, usando o OBJECT
tipo.
EXEC sp_rename @objname = 'dbo.table1', @newname = 'table2', @objtype = 'OBJECT';