PDA

View Full Version : Filegroup & Default



mehdi58
دوشنبه 15 فروردین 1390, 17:55 عصر
با اجراي اسكريپت زير، يك ديتابيس با دو ديتا فايل و دو فايل گروپ ايجاد مي‌شود:

CREATE DATABASE myDB
ON
(NAME=mdf1,FILENAME='c:\myFile1.mdf'),
FILEGROUP fg(NAME=ndf1,FILENAME='c:\myFile1.ndf')


در ادامه اگر اسكريپت زير را اجرا كنيم مي‌بايست فايل گروپ fg به عنوان DEFAULT در نظر گرفته شود:

ALTER DATABASE myDB
MODIFY FILEGROUP fg DEFAULT


حال اگر اسكريپت زير را اجرا كنيم مي‌بايست ديتا فايل ndf2 در فايل گروپ DEFAULT كه همان fg است قرار گيرد:

ALTER DATABASE myDB
ADD FILE (NAME=ndf2,FILENAME='c:\myFile2.ndf')


اما اين اتفاق نمي‌افتد و ndf2 در فايل گروپ PRIMARY قرار مي‌گيرد! چرا؟
و اگر اين اسكريپت بصورت زير نوشته مي‌شد:

ALTER DATABASE myDB
ADD FILE (NAME=ndf2,FILENAME='c:\myFile2.ndf')TO FILEGROUP fg


آنگاه ndf2 در فايل گروپ fg قرار مي‌گرفت.
با اين حساب پس مزيت نوشتن اسكريپتي كه در آن مشخص كرديم كه فايل گروپ DEFAULT همان fg باشد چيست؟

حمیدرضاصادقیان
سه شنبه 16 فروردین 1390, 08:50 صبح
سلام.
من حدسم اینه که شاید یک Bug باشه. زیرا وقتی شما Default Filegorup رو مشخص می کنید و از طریق management Studio یک فایل اضافه می کنید در همون Filegroup مد نظر ما اضافه میشه ولی از طریق دستور Alter Database در Primary اضافه می شود. همچنین اگر از طریق دستور Create Table نیز اقدام به ایجاد یک جدول کنید در همون Filegroup پیش فرض اضافه می شود.
در مستندات مایکروسافت هم چیزی در این زمینه ننوشته و بحث براین است که اگر Default Filegroup تنظیم شده باشد هر شی که ایجاد می شود باید در داخل آن ایجاد شود که در مورد دستور Alter Database Add File این مورد صدق نمیکنه.
البته من در نسخه R2 تست نکردم ببینم آیا در اون نسخه هم به این شکل هست یاخیر.

AminSobati
سه شنبه 16 فروردین 1390, 13:10 عصر
سلام به دوستان عزیز،
مفهوم Default Filegroup فقط برای Objectها تعریف شده. افزودن فایل چون به معنی افزودن Object تلقی نمیشه، لذا به Default Filegroup هم مرتبط نمیشه.
ساخت Object جدید مکررا در دیتابیس رخ میده لذا Developer لازم نیست در انتهای CREATE مدام نام filegroup رو اضافه کنه. اما Add کردن فایل کار روزمره نیست و همیشه به Primary تعلق میگیره مگر اینکه شما filegroup دلخواه رو قید کنین

حمیدرضاصادقیان
سه شنبه 16 فروردین 1390, 16:31 عصر
آقای ثباتی پس چرا از طریق Manamement Studio فایل رو به دیتابیس اضافه می کنیم به همون Default FileGroup اضافه میشه؟

AminSobati
چهارشنبه 17 فروردین 1390, 00:17 صبح
این رفتار خود SSMS هست. اگر در همون DialogBox ازش Script بگیرین، میبینید که عبارت TO FILEGROUP رو اضافه کرده