sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo cambiar el nombre de una tabla en SQL Server

Uno de los deberes más críticos del administrador de la base de datos es administrar los objetos de la base de datos. Por ejemplo, la lógica de la aplicación cambia y los DBA pueden necesitar cambiar los nombres de los objetos de la base de datos. Esta tarea es crucial porque debemos asegurarnos de que el cambio de nombre no rompa la aplicación.

Recientemente me asignaron un proyecto en el que tuve que cambiar el nombre de un par de tablas. Aquí, voy a explicar cómo cambiar el nombre de una tabla de SQL Server de varias maneras.

Podemos renombrar una tabla usando:

  1. Estudio de administración de SQL Server.
  2. El sp_rename procedimiento almacenado.

Además, voy a cubrir los posibles errores que pueden ocurrir después de cambiar el nombre de las tablas y las precauciones necesarias. Este artículo está orientado a demostraciones, por lo que he creado los siguientes objetos en la instancia de SQL Server:

  1. La base de datos llamada StudentDB .
  2. Dos tablas llamadas tblSchool y tblEstudiante .
  3. Una clave externa entre tblSchool y tblEstudiante . La escuela tbl es una tabla principal y tblStudent es una tabla secundaria.
  4. Un procedimiento almacenado llamado sp_getStudents .
  5. Una vista llamada vwStudents .

Los códigos T-SQL aplicados para crear los objetos de base de datos anteriores son los siguientes:

Crear base de datos:

Create database [StudentDB]
Go

Crear una tabla y claves foráneas:

Use [StudentDB]
Go
CREATE TABLE [dbo].[tblSchool](
	[School_ID] [int] IDENTITY(1,1) NOT NULL,
	[School_Name] [varchar](500) NULL,
	[City] [varchar](50) NULL,
 CONSTRAINT [PK_tblSchool] PRIMARY KEY CLUSTERED 
(
	[School_ID] ASC
)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblStudent](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[student_name] [varchar](250) NOT NULL,
	[student_code] [varchar](5) NOT NULL,
	[student_grade] [char](2) NOT NULL,
	[SchoolID] [int] NOT NULL,
 CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
))
GO

ALTER TABLE [dbo].[tblStudent]  WITH CHECK ADD  CONSTRAINT [FK_tblStudent_tblSchool] FOREIGN KEY([SchoolID])
REFERENCES [dbo].[tblSchool] ([School_ID])
GO
ALTER TABLE [dbo].[tblStudent] CHECK CONSTRAINT [FK_tblStudent_tblSchool]
GO

Diagrama E-R de tblSchool y tblStudent:

Insertar datos ficticios en la tabla:

INSERT INTO tblschool
            (school_name,
             city)
VALUES     ('Nalanda School',
            'Mehsana'),
            ('Sarvajanik School',
             'Mehsana')
go
INSERT INTO tblstudent
            (student_name,
             student_code,
             student_grade,
             schoolid)
VALUES      ('Nisarg Upadhyay',
             'ST001',
             'A ',
             1),
            ('Dixit Upadhyay',
             'ST002',
             'A ',
             1),
            ('Bharti Upadhyay',
             'ST003',
             'C',
             2),
            ('Nimesh Patel',
             'ST004',
             'C',
             2),
            ('Raghav Dave',
             'ST005',
             'A',
             1)
go  

Cree un procedimiento almacenado:

USE studentdb
go
CREATE PROCEDURE Sp_getstudent
AS
  BEGIN
      SELECT id,
             student_code,
             student_name,
             student_grade,
             school_name,
             city
      FROM   tblstudent a
             INNER JOIN tblschool b
                     ON a.schoolid = b.school_id
  END

Crear una vista:

use StudentDB
go
create view vwStudents
as
select student_code [Student Code],
student_name [Student Name],
student_grade [Student Grade],
School_Name [School Name],
City [City]
from tblStudent a inner join tblSchool b on  a.SchoolID=b.School_ID

Cambiar el nombre de una tabla con el comando sp_rename

Podemos usar el sp_rename procedimiento almacenado para cambiar el nombre de cualquier objeto de la base de datos de SQL Server (no confundir con el operador del servidor alter table sql que cambia los datos en las tablas). La sintaxis es la siguiente:

Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Nombre_esquema.nombre_antiguo es el nombre de la tabla que desea cambiar.
  2. Nombre_esquema.nuevo_nombre es el nuevo nombre.

Ahora, cambiemos el nombre del tblStudent tabla a tbl_Students .

Use StudentDB
go
Exec sp_rename 'tblStudent','tbl_Students'
Go

La salida es:

Caution: Changing any part of an object name could break scripts and stored procedures.

El mensaje indica que el nombre de la tabla se ha cambiado correctamente.

Ahora veamos cómo podemos cambiar el nombre de la tabla usando SQL Server Management Studio.

Cómo cambiar el nombre de la tabla en SQL Server Management Studio (SSMS)

Para cambiar el nombre de una tabla, abra SQL Server Management Studio> Conéctese a la instancia de SQL Server> Expanda la base de datos> Expanda las tablas> Haga clic con el botón derecho en tblSchool> Cambiar nombre . O simplemente haga clic en tblSchool.

Especifique el nuevo nombre y pulse Intro .

Una vez que se cambia el nombre, puede ejecutar la siguiente consulta para verificar:

Como puede ver, el nombre de la tabla ha sido cambiado. Observe también que la fecha de modificación de la tabla se ha actualizado y la nueva fecha es la marca de tiempo cuando se modifica la tabla .

Cosas a tener en cuenta antes de cambiar el nombre de la tabla en MSSQL

Después de cambiar los nombres de las tablas de tblStudent y tblSchool , ejecutemos el procedimiento almacenado llamado sp_getstudent :

Use StudentDB
Go
Exec sp_getstudent
Go

Salida

Msg 208, Level 16, State 1, Procedure sp_getstudent, Line 4 [Batch Start Line 15]
Invalid object name 'tblStudent'.

El error indica que falta el objeto utilizado en la vista.

Ahora, ejecutemos la siguiente consulta para ver los datos de vwStudents :

Use StudentDB
Go
Select * from vwStudents
Go

Salida

Msg 208, Level 16, State 1, Procedure vwStudents, Line 8 [Batch Start Line 16]
Invalid object name 'tblStudent'.
Msg 4413, Level 16, State 1, Line 17
Could not use view or function 'vwStudents' because of binding errors.

El error indica que la consulta utilizada para crear una vista no puede encontrar las tablas denominadas tblStudent .

Para evitar este tipo de errores después de cambiar el nombre de la tabla, debemos comprobar la lista de objetos de la base de datos que dependen de las tablas.

La tabla del proceso de cambio de nombre de la tabla debe ser la siguiente:

  1. Cambiar el nombre de la tabla.
  2. Cambie el nombre de la tabla en el procedimiento almacenado, vistas, consultas Ad-Hoc y otros objetos.

Para encontrar la lista de objetos dependientes en la tabla específica, puede ejecutar sp_depends procedimiento almacenado. La sintaxis es:

exec sp_depends [obj_name]

Para encontrar la lista de los objetos que dependen del tblStudent tabla, ejecute la siguiente consulta:

use studentDB
go
exec sp_depends [vwStudents]

Salida:

Nota: Asegúrese de ejecutar este procedimiento antes de cambiar el nombre de la tabla. De lo contrario, la consulta devolverá NULL como salida.

Resumen

Este artículo explica cómo podemos usar sp_rename procedimiento almacenado y SQL Server Management Studio para cambiar el nombre de la tabla. Además, hemos definido los posibles errores que pueden ocurrir después de cambiar el nombre de las tablas y las precauciones que se deben tomar después de cambiar los nombres de las tablas. Para lidiar mejor con las tablas en el servidor SQL, lea también cómo usar la declaración de tabla desplegable en el servidor sql.