sp_rename (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPonto de extremidade de análises SQL no Microsoft FabricWarehouse no Microsoft Fabric
Altera o nome de um objeto criado pelo usuário no banco de dados atual. Esse objeto pode ser uma tabela, índice, coluna, tipo de dados alias ou Microsoft
Tipo definido pelo usuário CLR (Common Language Runtime) do .NET Framework.
Importante
Alguns objetos do sistema e a sintaxe Transact-SQL não têm suporte em pools SQL sem servidor no Azure Synapse Analytics, incluindo este artigo. Para obter mais informações, visite Suporte a 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
(visualização) 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 para o 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\
terminar com um.
arquivo . - Os nomes de tabela não podem conter
/
ou\
terminar com um.
arquivo .
@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 definido pelo usuário CLR adicionado executando CREATE TYPE ou sp_addtype. |
Aplica-se ao: Azure Synapse Analytics
- Em
sp_rename
(visualização) para o Azure Synapse Analytics,COLUMN
é 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ó pode ser renomeada se não for uma coluna de distribuição.sp_rename
só pode ser usado para renomear umCOLUMN
objeto de usuário.
Aplica-se a: Microsoft Fabric
- No
sp_rename
Warehouse no Microsoft Fabric,OBJECT
é o único valor com suporte para @objtype. - No
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á automaticamente renomeada porsp_rename
.sp_rename
pode ser usado para renomear índices XML primários e secundários.Renomear um procedimento armazenado, função, exibição ou gatilho não alterará o nome do objeto correspondente na coluna de definição da exibição de 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, apenas 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 Visualização para pools 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ário ser associado às funções de servidor fixas sysadmin ou dbcreator . Para renomear uma tabela contábil, a permissão ALTER LEDGER é necessária.
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 SalesTerritory
seguir renomeia a TerritoryID
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. Renomear restrições
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, em seguida, renomeia a estatística para NewContact
usando 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 table1
seguir renomeia a c1
coluna na tabela para col1
.
Observação
Esse recurso do Azure Synapse Analytics ainda está em visualização para pools 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';
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários