sql >> Database >  >> RDS >> Sqlserver

Hoe een tabelnaam in SQL Server te hernoemen

Een van de belangrijkste taken van de databasebeheerder is het beheren van databaseobjecten. De toepassingslogica verandert bijvoorbeeld en DBA's moeten mogelijk de namen van databaseobjecten wijzigen. Deze taak is cruciaal omdat we ervoor moeten zorgen dat het hernoemen de applicatie niet kapot maakt.

Ik heb onlangs een project toegewezen gekregen waarbij ik een aantal tabellen moest hernoemen. Hier ga ik uitleggen hoe je een SQL Server-tabel op verschillende manieren hernoemt.

We kunnen een tabel hernoemen met:

  1. SQL Server-beheerstudio.
  2. De sp_rename opgeslagen procedure.

Ook ga ik mogelijke fouten behandelen die kunnen optreden na het hernoemen van tabellen en de nodige voorzorgsmaatregelen. Dit artikel is demo-georiënteerd, dus ik heb de volgende objecten op de SQL Server-instantie gemaakt:

  1. De database met de naam StudentDB .
  2. Twee tafels genaamd tblSchool en tblStudent .
  3. Een externe sleutel tussen tblSchool en tblStudent . De tblSchool is een bovenliggende tabel, en tblStudent is een kindertafel.
  4. Een opgeslagen procedure met de naam sp_getStudents .
  5. Een weergave met de naam vwStudents .

De T-SQL-codes die zijn toegepast om de bovenstaande database-objecten te maken, zijn als volgt:

Maak database:

Create database [StudentDB]
Go

Maak een tabel en externe sleutels:

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

E-R diagram van tblSchool en tblStudent:

Voeg dummy-gegevens in de tabel in:

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  

Maak een opgeslagen procedure:

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

Maak een weergave:

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

De naam van een tabel wijzigen met de opdracht sp_rename

We kunnen de sp_rename . gebruiken opgeslagen procedure om een ​​willekeurig object van de SQL Server-database te hernoemen (niet te verwarren met de SQL Server-operator van de wijzigingstabel die gegevens in tabellen wijzigt). De syntaxis is als volgt:

Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Schema_name.old_name is de naam van de tabel die u wilt wijzigen.
  2. Schema_name.new_name is de nieuwe naam.

Laten we nu de naam van de tblStudent . hernoemen tabel naar tbl_Students .

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

De uitvoer is:

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

Het bericht geeft aan dat de naam van de tafel met succes is gewijzigd.

Laten we nu eens kijken hoe we de tabelnaam kunnen wijzigen met SQL Server Management Studio.

Tabelnaam wijzigen in SQL Server Management Studio (SSMS)

Om de naam van een tabel te wijzigen, opent u SQL Server Management Studio> Verbinden met SQL Server-instantie> Database uitvouwen> Tabellen uitvouwen> Klik met de rechtermuisknop op tblSchool> Naam wijzigen . Of klik gewoon op tblSchool.

Geef de nieuwe naam op en druk op Enter .

Nadat de naam is gewijzigd, kunt u de volgende query uitvoeren om te verifiëren:

Zoals u kunt zien, is de naam van de tabel gewijzigd. Merk ook op dat de wijzigingsdatum van de tabel is bijgewerkt en dat de nieuwe datum het tijdstempel is waarop de tabel wordt gewijzigd .

Dingen om op te letten voordat u de tabelnaam in MSSQL wijzigt

Na het wijzigen van de tabelnamen van tblStudent en tblSchool , laten we de opgeslagen procedure uitvoeren met de naam sp_getstudent :

Use StudentDB
Go
Exec sp_getstudent
Go

Uitvoer

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

De fout geeft aan dat het object dat in de weergave wordt gebruikt, ontbreekt.

Laten we nu de volgende query uitvoeren om de gegevens van de vwStudents te bekijken :

Use StudentDB
Go
Select * from vwStudents
Go

Uitvoer

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.

De fout geeft aan dat de query die is gebruikt om een ​​weergave te maken de tabellen met de naam tblStudent niet kan vinden .

Om dergelijke fouten te voorkomen na het wijzigen van de naam van de tabel, moeten we de lijst met database-objecten controleren die afhankelijk zijn van de tabellen.

De procestabel voor het hernoemen van de tabel zou als volgt moeten zijn:

  1. Wijzig de naam van de tabel.
  2. Wijzig de naam van de tabel in de Opgeslagen procedure, weergaven, ad-hocquery's en andere objecten.

Om de lijst van de afhankelijke objecten in de specifieke tabel te vinden, kunt u de sp_depends uitvoeren opgeslagen procedure. De syntaxis is:

exec sp_depends [obj_name]

Om de lijst met objecten te vinden die afhankelijk zijn van de tblStudent tabel, voer de volgende query uit:

use studentDB
go
exec sp_depends [vwStudents]

Uitvoer:

Opmerking: Zorg ervoor dat u deze procedure uitvoert voordat u de naam van de tabel wijzigt. Anders retourneert de query NULL als uitvoer.

Samenvatting

In dit artikel wordt uitgelegd hoe we de sp_rename . kunnen gebruiken opgeslagen procedure en SQL Server Management Studio om de naam van de tabel te wijzigen. Bovendien hebben we mogelijke fouten gedefinieerd die kunnen optreden na het hernoemen van de tabellen en de voorzorgsmaatregelen die moeten worden genomen na het wijzigen van de tabelnamen. Om beter om te gaan met tabellen in de SQL-server, lees ook hoe u de drop table-instructie in de SQL-server gebruikt.


  1. Bindende parameters voor Oracle Dynamic SQL

  2. Magicbricks migreert naar MariaDB om het grote verkeer te ondersteunen

  3. Hoe grotere gegevens in de Oracle-tabellen invoegen/bijwerken?

  4. Hoe helpt pgBouncer om Django te versnellen?