PDA

View Full Version : ديتابيس و فايل MDF



mehdi58
دوشنبه 16 اسفند 1389, 18:02 عصر
سلام
تا آنجايي كه من مي دانم همواره يك ديتابيس شامل يك فايل 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
سه شنبه 17 اسفند 1389, 08:52 صبح
سلام
كم كم دارم به خودم شك مي كنم .
آيا واقعا اين چيزها كه من گفتم درست است يا نه ؟
متاسفانه 21 مشاهده داشتيم ولي هنوز كسي نه صحت گفته هاي مرا تاييد كرده و نه تصديق !
اميدوارم مدير محترم تالار به كمك ما بيايد .
با سپاس

micro24
سه شنبه 17 اسفند 1389, 15:55 عصر
با سلام

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

mehdi58
پنج شنبه 19 اسفند 1389, 10:57 صبح
با سلام

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

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

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

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

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

حمیدرضاصادقیان
یک شنبه 22 اسفند 1389, 14:25 عصر
عرض کردم دلیل وجود چندتا فایل 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
سه شنبه 16 فروردین 1390, 14:58 عصر
همونطور که آقای صادقیان اشاره کردند، میتونین پسوند همه فایلها رو mdf بگذارین یا اصلا jpg یا mp3!
پسوند فایلها فقط برای من و شما کاربرد داره که در My computer بتونیم اونها رو تشخیص بدیم. اما از دیدگاه SQL Server، در گرامر دستور CREATE DATABASE اولین فایلی که معرفی میشه "نقش" MDF خواهد داشت. در مورد این جمله که "اطلاعات سیستمی در MDF قرار میگیرند" بهتره کاملش کنیم و بگیم:
اطلاعات سیستمی در Primary Filegroup قرار میگیرند.
فایل MDF همیشه عضو Primary Filegroup هست ولی میتونین NDF هم بهش اضافه کنین.