sp_rename (Transact-SQL)sp_rename (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cambia el nombre de un objeto creado por el usuario en la base de datos actual.Changes the name of a user-created object in the current database. Este objeto puede ser una tabla, un índice, una columna, un tipo de datos de alias o un tipo definido por el usuario de MicrosoftMicrosoft .NET Framework.NET Framework Common Language Runtime (CLR).This object can be a table, index, column, alias data type, or MicrosoftMicrosoft .NET Framework.NET Framework common language runtime (CLR) user-defined type.

Precaución

Al cambiar cualquier parte del nombre de un objeto se pueden interrumpir scripts y procedimientos almacenados.Changing any part of an object name can break scripts and stored procedures. Se recomienda no utilizar esta instrucción para cambiar el nombre a procedimientos almacenados, desencadenadores, funciones definidas por el usuario o vistas; en su lugar, quite el objeto y vuelva a crearlo con el nuevo nombre.We recommend you do not use this statement to rename stored procedures, triggers, user-defined functions, or views; instead, drop the object and re-create it with the new name.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

[@objname =] 'object_name'[ @objname = ] 'object_name'
Es el nombre actual completo o incompleto del objeto de usuario o tipo de datos.Is the current qualified or nonqualified name of the user object or data type. Si el objeto al que se va a cambiar el nombre es una columna de una tabla, object_name debe tener el formato tabla. columna o esquema. tabla. columna.If the object to be renamed is a column in a table, object_name must be in the form table.column or schema.table.column. Si el objeto cuyo nombre se va a cambiar es un índice, object_name debe tener el formato TABLE. index o Schema. Table. index.If the object to be renamed is an index, object_name must be in the form table.index or schema.table.index. Si el objeto cuyo nombre se va a cambiar es una restricción, object_name debe tener el formato Schema. Constraint.If the object to be renamed is a constraint, object_name must be in the form schema.constraint.

Las comillas solo se necesitan si se especifica un objeto completo.Quotation marks are only necessary if a qualified object is specified. Si se proporciona un nombre completo, incluido el nombre de la base de datos, el nombre de la base de datos debe ser el de la base de datos actual.If a fully qualified name, including a database name, is provided, the database name must be the name of the current database. object_name es de tipo nvarchar (776) y no tiene ningún valor predeterminado.object_name is nvarchar(776), with no default.

[@newname =] 'new_name'[ @newname = ] 'new_name'
Es el nuevo nombre del objeto especificado.Is the new name for the specified object. new_name debe ser un nombre de una parte y debe cumplir las reglas de los identificadores.new_name must be a one-part name and must follow the rules for identifiers. NewName es de tipo sysnamey no tiene ningún valor predeterminado.newname is sysname, with no default.

Nota

Los nombres de los desencadenadores no pueden comenzar por # o ##.Trigger names cannot start with # or ##.

[@objtype =] 'object_type'[ @objtype = ] 'object_type'
Es el tipo de objeto cuyo nombre se va a cambiar.Is the type of object being renamed. object_type es de tipo VARCHAR (13) , su valor predeterminado es NULL y puede tener uno de estos valores.object_type is varchar(13), with a default of NULL, and can be one of these values.

ValorValue DescripciónDescription
COLUMNCOLUMN Una columna cuyo nombre se va a cambiar.A column to be renamed.
DATABASEDATABASE Una base de datos definida por el usuario.A user-defined database. Este tipo de objeto es necesario cuando se cambia el nombre de una base de datosThis object type is required when renaming a database.
INDEXINDEX Índice definido por el usuario.A user-defined index. Si se cambia el nombre a un índice con estadísticas, también se cambia automáticamente a las estadísticas.Renaming an index with statistics, also automatically renames the statistics.
OBJECTOBJECT Un elemento de un tipo del que se realiza un seguimiento en Sys. Objects.An item of a type tracked in sys.objects. Por ejemplo, OBJECT podría utilizarse para cambiar el nombre de objetos como restricciones (CHECK, FOREIGN KEY, PRIMARY o UNIQUE KEY), tablas de usuario y reglas.For example, OBJECT could be used to rename objects including constraints (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), user tables, and rules.
STATISTICSSTATISTICS Se aplica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) y versiones posteriores, y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later and Base de datos SQL de AzureAzure SQL Database.

Estadísticas que crea un usuario explícitamente o que se crean implícitamente con un índice.Statistics created explicitly by a user or created implicitly with an index. Si se cambia el nombre de las estadísticas de un índice, también se cambia automáticamente el nombre del índice.Renaming the statistics of an index automatically renames the index as well.
USERDATATYPEUSERDATATYPE Tipos definidos por el usuario CLR agregados al ejecutar CREATE Type o sp_addtype.A CLR User-defined Types added by executing CREATE TYPE or sp_addtype.

Valores de código de retornoReturn Code Values

0 (correcto) o un número distinto de cero (error)0 (success) or a nonzero number (failure)

RemarksRemarks

Solo se puede cambiar el nombre de un objeto o tipo de datos de la base de datos actual.You can change the name of an object or data type in the current database only. No se pueden cambiar los nombres de la mayoría de los tipos de datos y objetos del sistema.The names of most system data types and system objects cannot be changed.

sp_rename cambia automáticamente el nombre del índice asociado cuando se cambia el nombre de una restricción PRIMARY KEY o UNIQUE.sp_rename automatically renames the associated index whenever a PRIMARY KEY or UNIQUE constraint is renamed. Si un índice cuyo nombre se ha cambiado está enlazado a una restricción PRIMARY KEY, sp_rename también cambia automáticamente el nombre de esta restricción.If a renamed index is tied to a PRIMARY KEY constraint, the PRIMARY KEY constraint is also automatically renamed by sp_rename.

sp_rename se puede utilizar para cambiar el nombre de los índices XML principales y secundarios.sp_rename can be used to rename primary and secondary XML indexes.

Al cambiar el nombre de un procedimiento almacenado, una función, una vista o un desencadenador, no se cambiará el nombre del objeto correspondiente en la columna de definición de la vista de catálogo Sys. sql_modules u obtenida mediante la función integrada OBJECT_DEFINITION .Renaming a stored procedure, function, view, or trigger will not change the name of the corresponding object either in the definition column of the sys.sql_modules catalog view or obtained using the OBJECT_DEFINITION built-in function. Por lo tanto, se recomienda no utilizar sp_rename para cambiar el nombre a estos tipos de objetos.Therefore, we recommend that sp_rename not be used to rename these object types. En su lugar, quite el objeto y vuelva a crearlo con su nuevo nombre.Instead, drop and re-create the object with its new name.

Al cambiar el nombre de un objeto como una tabla o columna, no se cambia automáticamente el nombre de las referencias a ese objeto.Renaming an object such as a table or column will not automatically rename references to that object. Es necesario modificar de forma manual los objetos que hacen referencia al objeto cuyo nombre se ha cambiado.You must modify any objects that reference the renamed object manually. Por ejemplo, si se cambia el nombre de una columna de una tabla y en un desencadenador existe una referencia a esa columna, es necesario modificar el desencadenador para reflejar el nuevo nombre de la columna.For example, if you rename a table column and that column is referenced in a trigger, you must modify the trigger to reflect the new column name. Use sys.sql_expression_dependencies para ver las dependencias del objeto antes de cambiarle el nombre.Use sys.sql_expression_dependencies to list dependencies on the object before renaming it.

PermisosPermissions

Para cambiar el nombre de objetos, columnas e índices, se necesita permiso ALTER en el objeto.To rename objects, columns, and indexes, requires ALTER permission on the object. Para cambiar el nombre de tipos de usuario, se necesita el permiso CONTROL en el tipo.To rename user types, requires CONTROL permission on the type. Para cambiar el nombre de una base de datos, debe pertenecer a los roles fijos de servidor sysadmin o dbcreator.To rename a database, requires membership in the sysadmin or dbcreator fixed server roles

EjemplosExamples

A.A. Cambiar el nombre de una tablaRenaming a table

En el siguiente ejemplo se cambia el nombre de la tabla SalesTerritory por SalesTerr en el esquema Sales .The following example renames the SalesTerritory table to SalesTerr in the Sales schema.

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

b.B. Cambiar el nombre de una columnaRenaming a column

En el ejemplo siguiente se cambia el nombre de la columna TerritoryID de la tabla SalesTerritory a TerrID.The following example renames the TerritoryID column in the SalesTerritory table to TerrID.

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

C.C. Cambiar el nombre de un índiceRenaming an index

En el siguiente ejemplo se cambia el nombre del índice IX_ProductVendor_VendorID por IX_VendorID.The following example renames the IX_ProductVendor_VendorID index to IX_VendorID.

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

D.D. Cambiar el nombre de un tipo de datos de aliasRenaming an alias data type

En el siguiente ejemplo se cambia el nombre del tipo de datos de alias Phone por Telephone.The following example renames the Phone alias data type to Telephone.

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

E.E. Cambiar el nombre de las restriccionesRenaming constraints

En los siguientes ejemplos se cambia el nombre de las restricciones PRIMARY KEY, CHECK y FOREIGN KEY.The following examples rename a PRIMARY KEY constraint, a CHECK constraint and a FOREIGN KEY constraint. Al cambiar el nombre de una restricción, debe especificarse el esquema al que pertenece.When renaming a constraint, the schema to which the constraint belongs must be specified.

USE AdventureWorks2012;   
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.  
sp_rename 'HumanResources.PK_Employee_BusinessEntityID', 'PK_EmployeeID';  
GO  
  
-- Rename a check constraint.  
sp_rename 'HumanResources.CK_Employee_BirthDate', 'CK_BirthDate';  
GO  
  
-- Rename a foreign key constraint.  
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');  
  
  
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.F. Cambiar el nombre de las estadísticasRenaming statistics

En el ejemplo siguiente se crea un objeto de estadísticas denominado contactMail1 y, a continuación, se cambia el nombre de la estadística a NewContact mediante sp_rename.The following example creates a statistics object named contactMail1 and then renames the statistic to NewContact by using sp_rename. Al cambiar el nombre de las estadísticas, el objeto se debe especificar con el formato schema.table.statistics_name.When renaming statistics, the object must be specified in the format schema.table.statistics_name.

CREATE STATISTICS ContactMail1  
    ON Person.Person (BusinessEntityID, EmailPromotion)  
    WITH SAMPLE 5 PERCENT;  
  
sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';  
  

Vea tambiénSee Also

sys.sql_expression_dependencies (Transact-SQL) sys.sql_expression_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL) sys.sql_modules (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL) System Stored Procedures (Transact-SQL)
Procedimientos (almacenados de motor de base de datos TRANSACT-SQL)Database Engine Stored Procedures (Transact-SQL)