راهنمای تغییر نام و مالکیت اشیاء SQL Server

راهنمای جامع: تغییر نام و مالکیت اشیاء پایگاه داده SQL Server به روش‌های اصولی

پایگاه داده SQL Server شامل اشیاء متعددی است که هسته اصلی ساختار آن را تشکیل می‌دهند. در طول زمان، ممکن است نیاز به تغییر نام یا تغییر مالکیت این اشیاء باشد. در این مقاله جامع، به بررسی دقیق نحوه تغییر نام اشیاء پایگاه داده SQL Server و همچنین چگونگی تغییر مالکیت اشیاء SQL Server خواهیم پرداخت.

عملیات تغییر نام اشیاء پایگاه داده معمولاً با استفاده از رویه ذخیره شده sp_rename انجام می‌شود. سینتکس این رویه ذخیره شده بسته به نوع شیئی که قصد تغییر نام آن را دارید، کمی متفاوت است. ما در اینجا به تفصیل نحوه تغییر نام جداول، ستون‌ها، ایندکس‌ها، رویه‌های ذخیره شده، نماها (Views)، توابع، تریگرها، کلیدهای اصلی (Primary Keys)، کلیدهای خارجی (Foreign Keys)، محدودیت‌های پیش‌فرض (Default Constraints) و محدودیت‌های اعتبارسنجی (Check Constraints) را پوشش خواهیم داد.

تغییر نام جداول در SQL Server

برای تغییر نام یک جدول در SQL Server، سینتکس به شرح زیر است:

sp_rename ‘TableName’, ‘NewTableName’

برای درک بهتر، یک مثال را بررسی می‌کنیم. ابتدا یک جدول ایجاد می‌کنیم:


USE tempdb;
GO
CREATE TABLE TestRename (col1 INT, col2 VARCHAR(20));
GO

برای تغییر نام این جدول از TestRename به TestRenameNew، دستور زیر را اجرا می‌کنیم:


EXEC sp_rename 'TestRename', 'TestRenameNew';
GO

تغییر نام ستون‌ها در SQL Server

برای تغییر نام یک ستون در SQL Server، سینتکس به شرح زیر است. توجه داشته باشید که پارامتر سوم ‘COLUMN’ است:

sp_rename ‘TableName.ColumnName’, ‘NewColumnName’, ‘COLUMN’

یک مثال را بررسی می‌کنیم. ابتدا یک جدول ایجاد می‌کنیم:


USE tempdb;
GO
CREATE TABLE TestRenameColumns (col1 INT, col2 VARCHAR(20));
GO

برای تغییر نام ستون “col2” به “newcol2″، دستور زیر را اجرا می‌کنیم:


EXEC sp_rename 'TestRenameColumns.col2', 'newcol2', 'COLUMN';
GO

تغییر نام ایندکس‌ها در SQL Server

برای تغییر نام یک ایندکس در SQL Server، سینتکس به شرح زیر است. توجه داشته باشید که پارامتر سوم ‘INDEX’ است:

sp_rename ‘TableName.IndexName’, ‘NewIndexName’, ‘INDEX’

یک مثال را بررسی می‌کنیم. ابتدا یک جدول و یک ایندکس ایجاد می‌کنیم:


USE tempdb;
GO
CREATE TABLE TestRenameIndexes (col1 INT, col2 VARCHAR(20));
CREATE INDEX IX_TestRenameIndexes ON TestRenameIndexes (col2);
GO

برای تغییر نام ایندکس “IX_TestRenameIndexes” به “IX_TestRenameIndexesNew”، دستور زیر را اجرا می‌کنیم:


EXEC sp_rename 'TestRenameIndexes.IX_TestRenameIndexes', 'IX_TestRenameIndexesNew', 'INDEX';
GO

تغییر نام رویه‌های ذخیره شده، نماها، توابع و تریگرها در SQL Server

برای تغییر نام رویه‌های ذخیره شده (Stored Procedures)، نماها (Views)، توابع (Functions) و تریگرها (Triggers)، سینتکس به شرح زیر است. توجه داشته باشید که پارامتر سوم ‘OBJECT’ است:

sp_rename ‘ObjectName’, ‘NewObjectName’, ‘OBJECT’

یک مثال را بررسی می‌کنیم. ابتدا یک رویه ذخیره شده ایجاد می‌کنیم:


USE tempdb;
GO
CREATE PROCEDURE TestRenameSP AS SELECT GETDATE() AS CurrentDate;
GO

برای تغییر نام این رویه ذخیره شده از “TestRenameSP” به “TestRenameSPNew”، دستور زیر را اجرا می‌کنیم:


EXEC sp_rename 'TestRenameSP', 'TestRenameSPNew', 'OBJECT';
GO

لازم به ذکر است که تغییر نام رویه‌های ذخیره شده، نماها، توابع و تریگرها، هیچ شیء دیگری را که به این اشیاء ارجاع می‌دهند، به‌روزرسانی نخواهد کرد. باید اطمینان حاصل کنید که تمام ارجاعات را پیدا کرده و آن‌ها را نیز به‌روزرسانی کنید.

تغییر نام کلیدهای اصلی، خارجی و محدودیت‌ها در SQL Server

برای تغییر نام کلیدهای اصلی (Primary Keys)، کلیدهای خارجی (Foreign Keys)، محدودیت‌های پیش‌فرض (Default Constraints) و محدودیت‌های اعتبارسنجی (Check Constraints)، سینتکس به شرح زیر است. توجه داشته باشید که پارامتر سوم ‘OBJECT’ است:

sp_rename ‘ConstraintName’, ‘NewConstraintName’, ‘OBJECT’

یک مثال را بررسی می‌کنیم. ابتدا یک جدول با کلید اصلی، کلید خارجی، محدودیت پیش‌فرض و محدودیت اعتبارسنجی ایجاد می‌کنیم:


USE tempdb;
GO
CREATE TABLE TestRenameConstraintsPK (col1 INT PRIMARY KEY);
CREATE TABLE TestRenameConstraintsFK (col1 INT, col2 INT);
ALTER TABLE TestRenameConstraintsFK ADD CONSTRAINT FK_TestRenameConstraintsFK FOREIGN KEY (col1) REFERENCES TestRenameConstraintsPK (col1);
ALTER TABLE TestRenameConstraintsFK ADD CONSTRAINT DF_TestRenameConstraintsFK DEFAULT (0) FOR col2;
ALTER TABLE TestRenameConstraintsFK ADD CONSTRAINT CK_TestRenameConstraintsFK CHECK (col2 > 0);
GO

برای تغییر نام کلید اصلی “PK__TestRena__F5E48566270E63AA” برای جدول TestRenameConstraintsPK به “PK_TestRenameConstraintsPK_New”، دستور زیر را اجرا می‌کنیم. نام “PK__TestRena__F5E48566270E63AA” توسط سیستم تولید شده است. می‌توانید این نام‌ها را با اجرای sp_help ‘TestRenameConstraintsPK’ و بررسی ستون‌های index_name و constraint_name به دست آورید.


EXEC sp_rename 'PK__TestRena__F5E48566270E63AA', 'PK_TestRenameConstraintsPK_New', 'OBJECT';
GO

برای تغییر نام کلید خارجی “FK_TestRenameConstraintsFK” به “FK_TestRenameConstraintsFK_New”، دستور زیر را اجرا می‌کنیم:


EXEC sp_rename 'FK_TestRenameConstraintsFK', 'FK_TestRenameConstraintsFK_New', 'OBJECT';
GO

برای تغییر نام محدودیت پیش‌فرض “DF_TestRenameConstraintsFK” به “DF_TestRenameConstraintsFK_New”، دستور زیر را اجرا می‌کنیم:


EXEC sp_rename 'DF_TestRenameConstraintsFK', 'DF_TestRenameConstraintsFK_New', 'OBJECT';
GO

برای تغییر نام محدودیت اعتبارسنجی “CK_TestRenameConstraintsFK” به “CK_TestRenameConstraintsFK_New”، دستور زیر را اجرا می‌کنیم:


EXEC sp_rename 'CK_TestRenameConstraintsFK', 'CK_TestRenameConstraintsFK_New', 'OBJECT';
GO

تغییر نام کاربران و لاگین‌ها در SQL Server

رویه ذخیره شده sp_rename برای تغییر نام کاربران (Users) یا لاگین‌ها (Logins) استفاده نمی‌شود.

برای تغییر نام یک لاگین در SQL Server، می‌توانید از دستور ALTER LOGIN به شکل زیر استفاده کنید:

ALTER LOGIN OldLoginName WITH NAME = NewLoginName

یک مثال را بررسی می‌کنیم. ابتدا یک لاگین ایجاد می‌کنیم:


USE master;
GO
CREATE LOGIN TestRenameLogin WITH PASSWORD = 'password', CHECK_POLICY = OFF;
GO

برای تغییر نام این لاگین از “TestRenameLogin” به “TestRenameLoginNew”، دستور زیر را اجرا می‌کنیم:


ALTER LOGIN TestRenameLogin WITH NAME = TestRenameLoginNew;
GO

برای تغییر نام یک کاربر در SQL Server، می‌توانید از دستور ALTER USER به شکل زیر استفاده کنید:

ALTER USER OldUserName WITH NAME = NewUserName

یک مثال را بررسی می‌کنیم. ابتدا یک کاربر ایجاد می‌کنیم:


USE tempdb;
GO
CREATE USER TestRenameUser FOR LOGIN TestRenameLoginNew;
GO

برای تغییر نام این کاربر از “TestRenameUser” به “TestRenameUserNew”، دستور زیر را اجرا می‌کنیم:


ALTER USER TestRenameUser WITH NAME = TestRenameUserNew;
GO

تغییر مالکیت اشیاء پایگاه داده SQL Server

دو روش اصلی برای تغییر مالکیت اشیاء پایگاه داده با استفاده از دستورات ALTER SCHEMA و ALTER AUTHORIZATION وجود دارد.

استفاده از ALTER SCHEMA

دستور ALTER SCHEMA می‌تواند برای انتقال اشیاء ایمن‌سازی شده (securables) از یک شمای (schema) به شمای دیگر استفاده شود. سینتکس به شرح زیر است:

ALTER SCHEMA TargetSchemaName TRANSFER ObjectName

یک مثال را بررسی می‌کنیم. ابتدا یک جدول ایجاد می‌کنیم:


USE tempdb;
GO
CREATE SCHEMA SchemaA;
GO
CREATE TABLE SchemaA.TestChangeOwner (col1 INT);
GO

برای انتقال این جدول از شمای “SchemaA” به شمای “dbo”، دستور زیر را اجرا می‌کنیم. توجه داشته باشید که اگر شیء در حال حاضر در شمایی نباشد، به طور پیش‌فرض در شمای “dbo” خواهد بود؛ بنابراین، اگر می‌خواهید آن را از “dbo” به شمای دیگری منتقل کنید، کافیست همین دستور را اجرا کنید.


ALTER SCHEMA dbo TRANSFER SchemaA.TestChangeOwner;
GO
استفاده از ALTER AUTHORIZATION

دستور ALTER AUTHORIZATION می‌تواند برای تغییر مالکیت یک شیء استفاده شود. سینتکس به شرح زیر است:

ALTER AUTHORIZATION ON ObjectName TO NewOwner

یک مثال را بررسی می‌کنیم. ابتدا یک جدول ایجاد می‌کنیم:


USE tempdb;
GO
CREATE USER TestChangeOwnerUser WITHOUT LOGIN;
CREATE TABLE TestChangeOwner (col1 INT);
GO

برای تغییر مالکیت جدول “TestChangeOwner” از “dbo” به “TestChangeOwnerUser”، دستور زیر را اجرا می‌کنیم:


ALTER AUTHORIZATION ON TestChangeOwner TO TestChangeOwnerUser;
GO

“`

من علی دستجردی‌ام؛ عاشق کار با دیتا، از SQL Server تا بیگ‌دیتا و هوش مصنوعی. دغدغه‌ام کشف ارزش داده‌ها و به‌اشتراک‌گذاری تجربه‌هاست. ✦ رزومه من: alidastjerdi.com ✦

عضویت
منو باخبر کن!!!
guest
نام
ایمیل

0 دیدگاه
Inline Feedbacks
دیدن تمامی کامنتها

فوتر سایت

ورود به سایت

sqlyar

هنوز عضو نیستید؟

ورود به سایت

هنوز تبت نام نکردید ؟