# پایگاه‌های داده > SQL Server > مدیریت دیتابیس (Database Administration) > Maintenance Plan >  ديتابيس و فايل MDF

## mehdi58

سلام
تا آنجايي كه من مي دانم همواره يك ديتابيس  شامل يك فايل mdf ، چندين فايل ldf و به دلخواه چندين فايل ndf باشد . (حد نهايي تعداد ldf . ndf برابر 32767 است)
همانطور كه مي دانيم اطلاعات سيستمي در داخل فايل mdf ذخيره مي شود و توصيه شده كه براي ذخيره داده ها از فايلهاي ndf استفاده شود .
و اما سوال
با توجه به اينكه هر ديتابيس فقط مي تواند يك فايل mdf داشته باشد پس چرا هنگام اجراي اسكريپت زير با خطا روبرو نشده و خواهيم ديد كه هر دو فايل mdf توليد مي شوند ؟

  CREATE DATABASE mydb
ON
(NAME=x,FILEANAME='c:\x.mdf'),
(NAME=y,FILENAME='c:\y.mdf')    

به نظر شما چرا اين اتفاق مي افتد ؟ آيا منطقي است ؟
دليل وجود چندين فايل mdf و حتي وجود فايلهاي ndf چيست ؟
آيا وجود يك فايل mdf در مقابل چندين فايل mdf چه مزيتي مي تواند داشته باشد ؟

با سپاس

----------


## mehdi58

سلام
كم كم دارم به خودم شك مي كنم .
آيا واقعا اين چيزها كه من گفتم درست است يا نه ؟
متاسفانه 21 مشاهده داشتيم ولي هنوز كسي نه صحت گفته هاي مرا تاييد كرده و نه تصديق !
اميدوارم مدير محترم تالار به كمك ما بيايد .
با سپاس

----------


## micro24

با سلام

دستور شما درست می باشد فقط در خط 3 به جای FileName این FILANAME را نوشته اید.

----------


## mehdi58

> با سلام
> 
> دستور شما درست می باشد فقط در خط 3 به جای FileName این FILANAME را نوشته اید.


اسكريپت مورد نظر را اصلاح كردم اما گويا شما منظور من را درست متوجه نشده ايد .
من مي گويم چرا با توجه به اينكه به صراحت در BOOKS ONLINE عنوان شده كه يك ديتابيس فقط شامل يك ديتا فايل با پسوند MDF مي باشد اما با اسكريپتي كه من نوشتم مي توان ديتابيسي ايجاد كرد كه بيش از يك ديتا فايل MDF دارد .
دوستان موضوع برايم خيلي جالب شده است . اگر كسي در اين باره مطلبي مي داند حتما نظر بدهد .
از مدير تالار هم خواهش مي كنم نظرشان را در اين باره مطرح كنند .
با سپاس

----------


## حمیدرضاصادقیان

سلام.
فایلهای MDF,NDF فایلهای دیتا هستند و فایل Ldf فایل LOG.
فایل Log نیازی نیست چندتا باشه. ولی فایل دیتا میتواند چندتا باشد. بیشتر کاربردش هم این هست که شما فرضا Raid Controller دارید و میتوانید با استفاده از FileGroup هر فایل دیتا رو روی یک هارد قرار بدید. در این کار هنگام خواندن و نوشتن اطلاعات همزمان روی چند فایل نوشته می شود که اینکار سرعت کار شما رو افزایش میده.
فایل Log هم میتواند دوتا باشد ولی فایل Log تا فضای اولین فایل کامل پر نشود از فایل دوم استفاده نخواهد کرد. دلیل استفاده از فایل دوم Log برای این هست که فرضا روی یک درایو فضای آن پر شده و نیاز هست فایل Log روی یک درایو دیگر نوشته شود. یک فایل log دوم در یک درایو دیگر ایجاد کرده و فایل اول رو تنظیم میکنیم که دیگر حجم آن افزایش پیدا نکند.
امیدوارم توضیحات کامل بوده باشد.

----------


## mehdi58

> سلام.
> فایلهای MDF,NDF فایلهای دیتا هستند و فایل Ldf فایل LOG.
> فایل Log نیازی نیست چندتا باشه. ولی فایل دیتا میتواند چندتا باشد. بیشتر کاربردش هم این هست که شما فرضا Raid Controller دارید و میتوانید با استفاده از FileGroup هر فایل دیتا رو روی یک هارد قرار بدید. در این کار هنگام خواندن و نوشتن اطلاعات همزمان روی چند فایل نوشته می شود که اینکار سرعت کار شما رو افزایش میده.
> فایل Log هم میتواند دوتا باشد ولی فایل Log تا فضای اولین فایل کامل پر نشود از فایل دوم استفاده نخواهد کرد. دلیل استفاده از فایل دوم Log برای این هست که فرضا روی یک درایو فضای آن پر شده و نیاز هست فایل Log روی یک درایو دیگر نوشته شود. یک فایل log دوم در یک درایو دیگر ایجاد کرده و فایل اول رو تنظیم میکنیم که دیگر حجم آن افزایش پیدا نکند.
> امیدوارم توضیحات کامل بوده باشد.


سلام
سوال من در مورد فايلهاي MDF بود نه LDF .
چرا با اينكه با قاطعيت در Booksonline گفته شده كه هر ديتابيس فقط شامل يك فايل MDF است اما مي توان ديتابيسي ايجاد كرد كه بيش از يك فايل MDF داشته باشد .
من با فايلهاي NDF و LDF و ساختار و دليل وجودشان و ... هيچ مشكلي ندارم . مشكلم فقط فايلهاي MDF است .
با سپاس

----------


## حمیدرضاصادقیان

عرض کردم دلیل وجود چندتا فایل Data به چه علت میتواند باشد.



> فایل دیتا میتواند چندتا باشد. بیشتر کاربردش هم این هست که شما فرضا Raid  Controller دارید و میتوانید با استفاده از FileGroup هر فایل دیتا رو روی  یک هارد قرار بدید. در این کار هنگام خواندن و نوشتن اطلاعات همزمان روی  چند فایل نوشته می شود که اینکار سرعت کار شما رو افزایش میده.


در ضمن شما به این نکته ای هم که در BOL نوشته شده توجه نکردید.




> Secondary data files are optional, are user-defined, and store user data.  Secondary files can be used to spread data across multiple disks by putting each  file on a different  disk drive. Additionally, if a database exceeds the maximum size for a single  Windows file, you  can use secondary data files so the database can continue to grow.
>  The recommended file name extension for secondary data files is .ndf.


پیشنهاد میشه که پسوند فایلهای دیتای دوم رو ndf بذارید که با فایل اصلی اشتباه نشه ولی میتونید mdf هم بذارید.
دیتابیس همکاران سیستم در نسخه 2000 دارای 15 تا فایل mdf  بود که یک فایل اصلی و مابقی فایلها فرعی بودند.

----------


## AminSobati

همونطور که آقای صادقیان اشاره کردند، میتونین پسوند همه فایلها رو mdf بگذارین یا اصلا jpg یا mp3! 
پسوند فایلها فقط برای من و شما کاربرد داره که در My computer بتونیم اونها رو تشخیص بدیم. اما از دیدگاه SQL Server، در گرامر دستور CREATE DATABASE اولین فایلی که معرفی میشه "نقش" MDF خواهد داشت. در مورد این جمله که "اطلاعات سیستمی در MDF قرار میگیرند" بهتره کاملش کنیم و بگیم:
اطلاعات سیستمی در Primary Filegroup قرار میگیرند.
فایل MDF همیشه عضو Primary Filegroup هست ولی میتونین NDF هم بهش اضافه کنین.

----------

