sp_rename (Transact-SQL)

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 de alias ou tipo de dados CLR definido pelo usuário do Microsoft .NET Framework Common Language Runtime.

Observação sobre cuidadosCuidado

A alteração de qualquer parte de um nome de objeto pode quebrar scripts e procedimentos armazenados. É recomendável não usar essa instrução para renomear procedimentos armazenados, gatilhos, funções definidas pelo usuário ou exibições; em vez disso, descarte o objeto e recrie-o com o novo nome.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' 
    [ , [ @objtype = ] 'object_type' ] 

Argumentos

  • [ @objname = ] 'object_name'
    É o nome atual qualificado ou não qualificado do objeto do usuário ou do tipo de dados. Se o objeto a ser renomeado for uma coluna em uma tabela, o object_name deverá estar no formulário table.column ou schema.table.column. Se o objeto a ser renomeado for um índice, o object_name deverá estar no formulário table.index ou schema.table.index.

    As aspas serão necessárias apenas se um objeto qualificado estiver especificado. Se um nome totalmente 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. O object_name é nvarchar(776), sem padrão.

  • [ @newname = ] 'new_name'
    É o novo nome do objeto especificado. new_name deve ser um nome de uma única parte e seguir as regras para identificadores. newname é sysname, sem padrão.

    ObservaçãoObservação

    Os nomes de gatilhos não podem começar com # ou ##.

  • [ @objtype = ] 'object_type'
    É o tipo de objeto que está sendo renomeado. object_type é varchar(13), com um padrão de NULL, e pode ter um destes 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.

    OBJECT

    Um item de um tipo controlado 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.

    USERDATATYPE

    Um tipo de dados alias ou tipos de dado CLR definidos pelo usuário adicionados mediante a execução de CREATE TYPE ou sp_addtype.

Valores de código de retorno

0 (êxito) ou um número diferente de zero (falha)

Comentários

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.

sp_rename renomeia automaticamente o índice associado sempre que uma restrição PRIMARY KEY ou UNIQUE é renomeada. Se um índice renomeado for vinculado a uma restrição PRIMARY KEY, a restrição PRIMARY KEY também será renomeada automaticamente através de sp_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. Portanto, é recomendável que sp_rename não seja usado para renomear esses tipos de objetos. Em vez disso, cancele e recrie o objeto com o nome novo.

A renomeação de 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 dependências no objeto antes de renomeá-lo.

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, a associação é necessária nas funções de servidor fixas sysadmin ou dbcreator.

Exemplos

A. Renomeando uma tabela

O exemplo a seguir renomeia a tabela SalesTerritory como SalesTerr no esquema Sales.

USE AdventureWorks2008R2;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO

B. Renomeando uma coluna

O exemplo a seguir renomeia a coluna TerritoryID na tabela SalesTerritory como TerrID.

USE AdventureWorks2008R2;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO

C. Renomeando um índice

O exemplo a seguir renomeia o índice IX_ProductVendor_VendorID como IX_VendorID.

USE AdventureWorks2008R2;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO

D. Renomeando um tipo de dados de alias

O exemplo a seguir renomeia o tipo de dados de alias Phone como Telephone.

USE AdventureWorks2008R2;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO