خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


نحوه حذف یک Data File از یک دیتابیس SQL Server

نحوه حذف یک Data File از یک دیتابیس SQL Server
در پست های قبلی در خصوص نحوه ایجاد Log File و DataFile جدید برای یک دیتابیس در SQL Server صحبت شد و در صورت نیاز می توانید به لینک های زیر در این خصوص مراجعه کنید. اما در این پست در مورد نحوه حذف Data file یک دیتابیس در اس کیو ال سرور صحبت می شود. اگر در شرایطی هستید که مجبورید یک data file را از یک دیتابیس حذف کنید قبل از حذف باید اطلاعات آن را خالی کنید. خالی کردن اطلاعات، به معنی حذف اطلاعات نیست بلکه اطلاعات را به فایل دیگری در همان Filegroup انتقال می دهد. در مثال زیر شامل خالی کردن دیتافایل و سپس حذف آن می باشد.

سیستم یکپارچۀ سازمانی راهکار



-- Empty the file
DBCC SHRINKFILE (Solutions2, EMPTYFILE);
GO

-- Remove the file
ALTER DATABASE Solutions
REMOVE FILE Solutions2;
GO

در مثال فوق ابتدا دیتافایل تخلیه شده و سپس حذف می شود. . وقتی از EMPTYFILE استفاده می کنید ، همه داده ها را از فایل به فایل های دیگر در همان FileGroup منتقل می کند. بنابراین ، باید اطمینان حاصل کنید که این تنها فایل در FileGroup نیست (در غیر این صورت خطا دریافت خواهید کرد). EmptyFile همچنین به شما اطمینان می دهد که هیچ داده جدیدی به فایل اضافه نخواهد شد.
اگر مثال قبلی کمی گیج کننده بوده، مشکلی نیست. یک دیتابیس جدید با دیتا فایل جدید اضافه می کنیم و سپس آن را خالی و حذف می کنیم.

-- Switch to the master database
USE master;
GO

-- Create a new database
CREATE DATABASE Test;
GO

-- View it's data file and log file info
USE Test;
GO
SELECT file_id, name, type_desc, physical_name, size, max_size
FROM sys.database_files ;
GO

ابتدا قبل از ایجاد بانک اطلاعاتی جدیدی به نام Test به پایگاه داده master سوئیچ می کنیم. پس از ایجاد دیتابیس، بدان سوئیچ می کنیم و اطلاعاتی در خصوص فایل های دیتابیس از طریق View سیستمی sys.database_files بدست می آوریم.

-- Add a new data file
ALTER DATABASE Test
ADD FILE (
NAME = Test2,
FILENAME = '/var/opt/mssql/data/Test2.mdf',
SIZE = 8MB
);
GO

-- View it's data file and log file info
USE Test;
GO
SELECT file_id, name, type_desc, physical_name, size, max_size
FROM sys.database_files ;
GO

اکنون یک دیتافایل جدید با نام Test2 ایجاد شده و مسیری که در کوئری فوق مشاهده می کنید برای سيستم عامل های لینوکس و مک می باشد و برای سیستم عامل ویندوز کافیست فقط مسیری که در کوئری فوق نوشته شده را تغییر دهید و به سایر قسمت های کوئری دست نزنید.
حالا فرض کنید که در این دیتافایل جدید اطلاعات وجود دارد و حالا بنا به هر دلیلی نیاز داریم که این فایل را حذف کنیم. ولی طبق توضیحات فوق اول باید آن را خالی و سپس حذف کنیم(داده های آن به فایل دیگری منتقل شود).

-- Empty the new data file
DBCC SHRINKFILE (Test2, EMPTYFILE);
GO

-- Remove the file
ALTER DATABASE Test
REMOVE FILE Test2;
GO

-- View it's data file and log file info
USE Test;
GO
SELECT file_id, name, type_desc, physical_name, size, max_size
FROM sys.database_files ;
GO

دقیقا مانند اولین کوئری همین پست است و فقط نام دیتابیس فرق دارد. اگر دوباره به سراغ sys.database_files بروید، خواهید دید که Data File واقعا حذف شده است.


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز