Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So benennen Sie einen Tabellennamen in SQL Server um

Eine der wichtigsten Aufgaben des Datenbankadministrators ist die Verwaltung von Datenbankobjekten. Beispielsweise ändert sich die Anwendungslogik, und DBAs müssen möglicherweise die Datenbankobjektnamen ändern. Diese Aufgabe ist von entscheidender Bedeutung, da wir sicherstellen müssen, dass das Umbenennen die Anwendung nicht beschädigt.

Mir wurde kürzlich ein Projekt zugewiesen, bei dem ich einige Tabellen umbenennen musste. Hier werde ich erklären, wie man eine SQL Server-Tabelle auf verschiedene Arten umbenennt.

Wir können eine Tabelle umbenennen mit:

  1. SQL Server Management Studio.
  2. Der sp_rename gespeicherte Prozedur.

Außerdem werde ich mögliche Fehler behandeln, die nach dem Umbenennen von Tabellen auftreten können, sowie die notwendigen Vorsichtsmaßnahmen. Dieser Artikel ist Demo-orientiert, daher habe ich die folgenden Objekte auf der SQL Server-Instanz erstellt:

  1. Die Datenbank namens StudentDB .
  2. Zwei Tabellen mit dem Namen tblSchool und tblStudent .
  3. Ein Fremdschlüssel zwischen tblSchool und tblStudent . Die tblSchool ist eine übergeordnete Tabelle und tblStudent ist eine untergeordnete Tabelle.
  4. Eine gespeicherte Prozedur namens sp_getStudents .
  5. Eine Ansicht namens vwStudents .

Die zum Erstellen der obigen Datenbankobjekte angewendeten T-SQL-Codes lauten wie folgt:

Datenbank erstellen:

Create database [StudentDB]
Go

Erstellen Sie eine Tabelle und Fremdschlüssel:

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-Diagramm von tblSchool und tblStudent:

Dummy-Daten in die Tabelle einfügen:

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  

Erstellen Sie eine gespeicherte Prozedur:

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

Ansicht erstellen:

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

Umbenennen eines Tabellennamens mit dem Befehl sp_rename

Wir können sp_rename verwenden gespeicherte Prozedur zum Umbenennen eines beliebigen Objekts der SQL Server-Datenbank (nicht zu verwechseln mit dem SQL Server-Operator alter table, der Daten in Tabellen ändert). Die Syntax lautet wie folgt:

Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Schemaname.alter_name ist der Name der Tabelle, die Sie ändern möchten.
  2. Schemaname.neuer_Name ist der neue Name.

Lassen Sie uns nun tblStudent umbenennen Tabelle zu tbl_Students .

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

Die Ausgabe ist:

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

Die Meldung zeigt an, dass der Name der Tabelle erfolgreich geändert wurde.

Lassen Sie uns nun sehen, wie wir den Tabellennamen mit SQL Server Management Studio ändern können.

So ändern Sie den Tabellennamen in SQL Server Management Studio (SSMS)

Um eine Tabelle umzubenennen, öffnen Sie SQL Server Management Studio> Mit SQL Server-Instanz verbinden> Datenbank erweitern> Tabellen erweitern> Rechtsklick auf tblSchool> Umbenennen . Oder klicken Sie einfach auf tblSchool.

Geben Sie den neuen Namen an und drücken Sie Enter .

Nachdem der Name geändert wurde, können Sie zur Überprüfung die folgende Abfrage ausführen:

Wie Sie sehen können, wurde der Name der Tabelle geändert. Beachten Sie auch, dass das Änderungsdatum der Tabelle aktualisiert wurde und das neue Datum der Zeitstempel ist, zu dem die Tabelle geändert wurde .

Was Sie beachten sollten, bevor Sie den Tabellennamen in MSSQL ändern

Nach dem Ändern der Tabellennamen von tblStudent und tblSchool , lassen Sie uns die gespeicherte Prozedur mit dem Namen sp_getstudent ausführen :

Use StudentDB
Go
Exec sp_getstudent
Go

Ausgabe

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

Der Fehler weist darauf hin, dass das in der Ansicht verwendete Objekt fehlt.

Lassen Sie uns nun die folgende Abfrage ausführen, um die Daten von vwStudents anzuzeigen :

Use StudentDB
Go
Select * from vwStudents
Go

Ausgabe

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.

Der Fehler weist darauf hin, dass die zum Erstellen einer Ansicht verwendete Abfrage die Tabellen mit dem Namen tblStudent nicht finden kann .

Um solche Fehler nach Änderung des Tabellennamens zu vermeiden, müssen wir die Liste der Datenbankobjekte überprüfen, die von den Tabellen abhängig sind.

Die Tabelle des Tabellenumbenennungsprozesses sollte wie folgt aussehen:

  1. Ändern Sie den Namen der Tabelle.
  2. Ändern Sie den Namen der Tabelle in der gespeicherten Prozedur, Ansichten, Ad-Hoc-Abfragen und anderen Objekten.

Um die Liste der abhängigen Objekte in der spezifischen Tabelle zu finden, können Sie sp_depends ausführen gespeicherte Prozedur. Die Syntax lautet:

exec sp_depends [obj_name]

Um die Liste der Objekte zu finden, die von tblStudent abhängig sind Tabelle, führen Sie die folgende Abfrage aus:

use studentDB
go
exec sp_depends [vwStudents]

Ausgabe:

Hinweis: Stellen Sie sicher, dass Sie dieses Verfahren ausführen, bevor Sie die Tabelle umbenennen. Andernfalls gibt die Abfrage NULL als Ausgabe zurück.

Zusammenfassung

Dieser Artikel erklärt, wie wir sp_rename verwenden können gespeicherte Prozedur und SQL Server Management Studio um den Namen der Tabelle zu ändern. Darüber hinaus haben wir mögliche Fehler definiert, die nach dem Umbenennen der Tabellen auftreten können, und die Vorsichtsmaßnahmen, die nach dem Ändern der Tabellennamen getroffen werden müssen. Um besser mit Tabellen im SQL-Server umzugehen, lesen Sie auch, wie Sie die Drop-Table-Anweisung im SQL-Server verwenden.