sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man byter namn på ett tabellnamn i SQL Server

En av de mest kritiska databasadministratörernas uppgifter är att hantera databasobjekt. Till exempel ändras applikationslogiken och DBA:er kan behöva ändra databasobjektnamnen. Den här uppgiften är avgörande eftersom vi måste se till att byte av namn inte bryter applikationen.

Jag har nyligen fått ett projekt där jag fick byta namn på ett par tabeller. Här kommer jag att förklara hur man byter namn på en SQL Server-tabell på flera sätt.

Vi kan byta namn på en tabell med:

  1. SQL Server Management Studio.
  2. sp_rename lagrad procedur.

Jag kommer också att täcka potentiella fel som kan uppstå efter att ha bytt namn på tabeller och nödvändiga försiktighetsåtgärder. Den här artikeln är demo-orienterad, så jag har skapat följande objekt på SQL Server-instansen:

  1. Databasen med namnet StudentDB .
  2. Två tabeller med namnet tblSchool och tblStudent .
  3. En främmande nyckel mellan tblSchool och tblStudent . tblskolan är en överordnad tabell och tblStudent är ett barnbord.
  4. En lagrad procedur med namnet sp_getStudents .
  5. En vy som heter vwStudents .

T-SQL-koderna som används för att skapa ovanstående databasobjekt är följande:

Skapa databas:

Create database [StudentDB]
Go

Skapa en tabell och främmande nycklar:

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 över tblSchool och tblStudent:

Infoga dummydata i tabellen:

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  

Skapa en lagrad procedur:

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

Skapa en vy:

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

Byt namn på ett tabellnamn med kommandot sp_rename

Vi kan använda sp_rename lagrad procedur för att byta namn på alla objekt i SQL Server-databasen (förväxla inte med alter table sql-serveroperatör som ändrar data i tabeller). Syntaxen är följande:

Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Schema_name.old_name är namnet på tabellen som du vill ändra.
  2. Schema_name.new_name är det nya namnet.

Låt oss nu byta namn på tblStudenten tabell till tbl_Students .

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

Utdata är:

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

Meddelandet indikerar att namnet på tabellen har ändrats.

Låt oss nu se hur vi kan ändra tabellnamnet med SQL Server Management studio.

Hur man ändrar tabellnamn i SQL Server Management Studio (SSMS)

För att byta namn på en tabell, öppna SQL Server Management Studio> Anslut till SQL Server-instans> Expandera databas> Expandera tabeller> Högerklicka på tblSchool> Byt namn . Eller klicka bara på tblSchool.

Ange det nya namnet och tryck på Retur .

När namnet har ändrats kan du köra följande fråga för att verifiera:

Som du kan se har tabellens namn ändrats. Lägg också märke till att tabellens ändringsdatum har uppdaterats och att det nya datumet är tidsstämpeln när tabellen ändras .

Saker att ta hand om innan du ändrar tabellnamnet i MSSQL

Efter att ha ändrat tabellnamnen för tblStudent och tblSchool , låt oss köra den lagrade proceduren som heter sp_getstudent :

Use StudentDB
Go
Exec sp_getstudent
Go

Utdata

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

Felet indikerar att objektet som används i vyn saknas.

Låt oss nu köra följande fråga för att se data från vwStudents :

Use StudentDB
Go
Select * from vwStudents
Go

Utdata

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.

Felet indikerar att frågan som användes för att skapa en vy inte kan hitta tabellerna med namnet tblStudent .

För att undvika sådana fel efter att ha ändrat tabellens namn måste vi kontrollera listan över databasobjekt som är beroende av tabellerna.

Processtabellen för tabellbyte bör vara följande:

  1. Ändra namnet på tabellen.
  2. Ändra namnet på tabellen i den lagrade proceduren, vyer, ad hoc-frågor och andra objekt.

För att hitta listan över de beroende objekten i den specifika tabellen kan du köra sp_depends lagrad procedur. Syntaxen är:

exec sp_depends [obj_name]

För att hitta listan över objekt som är beroende av tblStudent tabell, kör följande fråga:

use studentDB
go
exec sp_depends [vwStudents]

Utgång:

Obs! Se till att du kör den här proceduren innan du byter namn på tabellen. Annars returnerar frågan NULL som utdata.

Sammanfattning

Den här artikeln förklarar hur vi kan använda sp_rename lagrad procedur och SQL Server Management Studio för att ändra tabellens namn. Dessutom har vi definierat potentiella fel som kan uppstå efter att tabellerna har bytt namn och de försiktighetsåtgärder som måste vidtas efter att tabellnamnen ändrats. För att bättre hantera tabeller i SQL-servern, läs också hur du använder drop table-satsen i SQL-servern.


  1. biginteger array-funktioner

  2. Hur vet man att installerad Oracle Client är 32-bitars eller 64-bitars?

  3. Hur man får de senaste 3 månadernas försäljningsdata i MySQL

  4. 25 Microsoft Access-genvägar för att spara tid i tabeller i databladsvy