تغییر نام فایلهای فیزیکی دیتابیس SQL Server

گاهی اوقات باید نام دیتابیس خود را در SQL Server تغییر نام دهیم. وقتی نام دیتابیس را تغییر می دهیم ، نام دیتابیس تغییر می کند اما نام فایل های فیزیکی دیتابیس (physical database file) یکسان است و تغییر نمی کند، بنابراین شناسایی فایل های دیتابیس  مربوطه برای آن دیتابیس گیج کننده می شود. به عنوان بهترین روش ، ما باید فایلهای فیزیکی دیتابیس را نیز تغییر دهیم تا در چنین مواردی با دیتابیس  مطابقت داشته باشد و از سردرگمی جلوگیری شود. اگر می خواهید نام فایل های فیزیکی دیتابیس خود را تغییر دهید ، این متن برای شما  بسیار مفید خواهد بود.

راه حل :

همانطور که همه می دانیم ، فایل های دیتابیس SQL Server دو نام دارند ، یکی به نام فایل منطقی و دیگری به نام فایل فیزیکی معروف هستند. نام فایل فیزیکی نام فایل واقعی در سیستم عامل ویندوز است.

وقتی نام دیتابیس را تغییر می دهیم ، نام دیتابیس تغییر می کند اما نام فایل فیزیکی دیتابیس ثابت می ماند. این می تواند برای شناسایی دیتابیس مربوطه در  فایلها  گیج کننده باشد. ما باید فایلهای دیتابیس  را به نام دیتابیس تغییر نام دهیم تا از هرگونه سردرگمی جلوگیری شود.

روشهای مختلفی برای تغییر نام فایلهای فیزیکی دیتابیس شما SQL Server وجود دارد. می توانید دیتابیس خود را آفلاین کنید ، سپس می توانید دستورات ALTER را پس از تغییر نام فایلهای واقعی اجرا کنید یا می توانید از روش detach attach برای تغییر نام فایلها استفاده کنید. در این متن ، من روش گام به گام را برای تغییر نام فایل های فیزیکی دیتابیس با خارج کردن دیتابیس  و سپس اجرای چند دستور ALTER به شما نشان خواهم داد. روش گام به گام روش detach attach را در بخش  بعدی توضیح خواهم داد.

توجه: قبل از هرگونه تغییر ، پشتیبان گیری کامل از دیتابیس  را انجام دهید. بدن داشتن بک آپ هیچ گونه تغییر را در بخش های مختلف سایت و دیتابیس خود انجام ندهید.

تغییر نام فایلهای فیزیکی دیتابیس SQL Server

مرحله 1: ابتدا با اجرای کد SQL زیر ، یک دیتابیس  به نام “Manvendra” با سه فایل داده (1 فایل اصلی و 2 فایل ثانویه) در یک filegroup و یک log file ایجاد می کنیم. شما می توانید نام پایگاه داده ، مسیر فایل ، نام فایل و اندازه را با توجه به نیاز خود تغییر دهید.

CREATE DATABASE [Manvendra]

 CONTAINMENT = NONE

 ON  PRIMARY

( NAME = N’Manvendra’, FILENAME = N’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra.mdf’,SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10MB ),

( NAME = N’Manvendra_1′, FILENAME = N’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra_1.ndf’,SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10MB ),

( NAME = N’Manvendra_2′, FILENAME = N’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra_2.ndf’ ,SIZE = 5MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10MB )

 LOG ON

( NAME = N’Manvendra_log’, FILENAME = N’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra_log.ldf’,SIZE = 10MB , MAXSIZE = 1GB , FILEGROWTH = 10%)

GO

 

مرحله 2: اکنون نام فایل ها فیزیکی را با اجرای کد T-SQL زیر برای اعتبارسنجی ایجاد دیتابیس  بررسی می کنیم.

USE Manvendra

GO

SELECT file_id, name as [logical_file_name], physical_name

FROM sys.database_files

می توانید این اطلاعات را با استفاده از SQL Server Management Studio با اجرای  پنجره properties  دیتابیس مانند تصویر زیر بررسی کنید.

در تصویر بالا می توانیم نام فایل های فیزیکی و منطقی پایگاه داده تازه ایجاد شده را مشاهده کنیم.

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

مرحله 3: از آنجایی که نمی توانیم نام فایل فیزیکی را تغییر دهیم در حالی که پایگاه داده آنلاین است ، با اجرای دستور T-SQL زیر پایگاه داده خود را آفلاین می کنیم. در صورت انجام هرگونه تراکنش مهم ، توصیه می شود ابتدا آنها را تکمیل کرده و سپس این مرحله را ادامه دهید.

 

USE [master];

GO

–Disconnect all existing session.

ALTER DATABASE Manvendra SET SINGLE_USER WITH ROLLBACK IMMEDIATE

GO

–Change database in to OFFLINE mode.

ALTER DATABASE Manvendra SET OFFLINE

قبل از تغییر نام فایلهای فیزیکی ، وضعیت پایگاه داده را بررسی و اعتباربخشی کنید. شما می توانید وضعیت را با اجرای کد T-SQL زیر بررسی کنید یا می توانید پوشه پایگاه داده خود را در SQL Server Management Studio بازخوانی کنید. پس از انجام این کار ، اطلاعاتی مانند تصویر زیر را مشاهده خواهید کرد.

مرحله 4: از آنجا که پایگاه داده آفلاین است ، می توانیم نام فایلهای فیزیکی پایگاه داده مورد نظر را تغییر دهیم. تصویر زیر نشان می دهد که ما همه فایل های پایگاه داده مرتبط را تغییر نام داده و پسوند “Renamed” را برای شناسایی آسان فایل ها اضافه کرده ایم.

مرحله 5: پس از تغییر نام فایل های فیزیکی ، گام بعدی این است که کاتالوگ سیستم را در جایی که نام فایل های قدیمی وجود دارد به روز کنید. دستورات ALTER زیر را برای تغییر نام هر فایل  به طور جداگانه اجرا کنید. من هر چهار فایل را تغییر نام می دهم ، بنابراین چهار دستور ALTER را اجرا می کنم.

ALTER DATABASE Manvendra MODIFY FILE (Name=’Manvendra’, FILENAME=’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra_Renamed.mdf’)

GO

ALTER DATABASE Manvendra MODIFY FILE (Name=’Manvendra_1′, FILENAME=’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra_1_Renamed.ndf’)

GO

ALTER DATABASE Manvendra MODIFY FILE (Name=’Manvendra_2′, FILENAME=’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra_2_Renamed.ndf’)

GO

ALTER DATABASE Manvendra MODIFY FILE (Name=’Manvendra_log’, FILENAME=’F:\MSSQL12.MSSQLSERVER\MSSQL\DATA\Manvendra_log_Renamed.ldf’)

GO

مرحله 6: هنگامی که کاتالوگ سیستم به روز شد ، مرحله بعدی انلاین کردن دیتابیسمی باشد. دستور T-SQL زیر را اجرا کنید تا دیتابیس انلاین شود. همچنین می توانید از SQL Server Management Studio برای انلاین کردن دیتابیس استفاده کنید.

ALTER DATABASE Manvendra SET ONLINE

Go

ALTER DATABASE Manvendra SET MULTI_USER

Go

 

هنگامی که دستور بالا با موفقیت اجرا شد ، پایگاه داده برای عملیات عادی آنلاین خواهد بود. با اجرای کد زیر T-SQL یا با بازخوانی پوشه “Database” در SQL Server Management Studio ، می توانید بررسی کنید که آیا پایگاه داده آنلاین است یا خیر.

SELECT name as [Database_Name], State_desc from sys.databases

مرحله 7: آخرین مرحله اطمینان حاصل کردن از تغییر نام فایل های فیزیکی م منطقی می باشد برای این منظور ما همان دستوراتی که در محله 2 اجرا کردیم را مجددا  اجرا می کنیم تا بتوانیم نام فایل ها را مجددا  کنترل کنیم .

USE Manvendra

GO

SELECT file_id, name as [logical_file_name], physical_name

FROM sys.database_files

نام فایل ها را می توانید با نام فایل ها در مرحله دو مقایسه نمایید همچنین از داخل  Management Studio پنجره Property  بخش Files نیز می توانید نام فایل ها را مشاهده و  کنترل کنید

نکته:

این مورد را  هرگز برروی سرور اصلی خود انجام ندهید برای تغییر نام  فایل ها  ابتدا یک بک اپ از دیتابیس خود تهیه و  برروی سیستم لوکال خود ریستور نمایید سپس تغییرات را مطابق با مراحله گفته شده  انجام دهید پس از آن مجددا  از دیتابیس خود بک آپ تهیه نمایید و  برروی سرور مجازی یا  اختصاصی خود انتقال دهید.

مطالب مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *