PDA

View Full Version : علت وجود گزینه Prevent saving changes



tooraj_azizi_1035
سه شنبه 23 آذر 1389, 10:08 صبح
سلام،
من نمی دانم که مایکروسافت چک باکس Prevent saving changes that require table to be re-created موجود در Tools>Options>Designer را در نسخ قبل از SQL Server 2008 (مخصوصاً 2000 و قبل از آن) قرار داده است یا نه.
همانطور که می دانید در صورتی که این چک باکس تیک بخورد ما از اعمال تغییراتی که موجب می شود SQL Server مجدداً جدول را روی دیسک ایجاد کند منع می شویم. اما چرا باید چنین گزینه برای کاربر فراهم باشد؟ کاربر می تواند طول یک ستون را تغییر دهد و مجدداً جدول را ذخیره کند بدون اینکه برایش ایجاد مجدد جدول روی دیسک اهمیتی داشته باشد. دلایل اینکه این تیک در منوی گفته شده قرار دارد چیست؟

majjjj
سه شنبه 23 آذر 1389, 10:30 صبح
تو ورژن های قبلی این گزینه وجود نداره و بیشتر برای جوگیری از تغییرات اساسی استفاده میشه

حمیدرضاصادقیان
سه شنبه 23 آذر 1389, 10:37 صبح
سلام.
در این قسمت (http://www.sql-server-performance.com/faq/saving_changes_not_permitted_p1.aspx) توضیح داده شده است.

AminSobati
سه شنبه 23 آذر 1389, 20:11 عصر
سلام دوست عزیزم،
ضمن اینکه پیشنهاد میکنم لینک مذکور رو حتما ببینید، بصورت خلاصه اگر بخواید بدونین، بعضی از تغییرات روی جدول موجب ساخت مجدد اون میشه. چنانچه جدول حجم قابل توجهی Data دربر داشته باشه، زمان قابل توجهی صرف خواهد کرد لذا شما بصورت دانسته و آگاهانه با حذف Prevent Saving این کار رو انجام میدین.
ولی به این نکته توجه بفرمایید که اگر با دستورات DDL آشنا باشین، مگر چند مورد نادر، میتونین با دستورات ALTER به هدف برسید در کمتر از یک ثانیه. در حالیکه همون کار از طریق SSMS ممکنه دقایقی به طول بیانجامه

esmit61
پنج شنبه 25 آذر 1389, 12:26 عصر
یعنی خودش اینقدر باهوش نیست که بتونه این فرمانی رو که ما از طریق ssms بهش میدیم رو تبدیل به دستورات DDL کنه ؟
میدونم که هست. میخوام بدونم چه فرقی بین این دو گزینه وجود داره (از طریق ssms و از طریق DDL)

AminSobati
پنج شنبه 25 آذر 1389, 23:36 عصر
تصور میکنم موضوع پیروی از یک خط مشی باشه تا هوشمندی، پاسخ به این سوال راحت نیست.
اگرچه دستور DDL میتونه سرعت بیشتری به همراه داشته باشه، ولی مواردی هست که براش دستور DDL مستقیم نداریم و SSMS کار رو را راحت میکنه. مثل تغییر خصوصیت Identity برای یک فیلد، که باید جدول دوباره ساخته بشه. از اونجاییکه دستور صریح DDL برای این کار وجود نداره، طی چند Step باید انجامش داد. SSMS میتونه کدش رو Generate کنه براتون.

tooraj_azizi_1035
شنبه 27 آذر 1389, 14:25 عصر
دوستان از توجهتون ممنون،
لینکی که اقای صادقیان پیشنهاد دادن رو خوندم. این لینک به این موضوع اشاره کرده که قابلیت Change Tracking feature تغییرات اعمال شده توسط کاربر بر روی جدول رو تعقیب یا Track می کنه. این یک قابلیت برای SQL Server 2008 محسوب می شه (Change Tracking feature ). این لینک میگه که اگر جدول از نو ایجاد بشه یک ریسک وجود داره و اون هم اینه که تغییرات ثبت شده توسط Change Tracking feature از دست می ره اما ثبت این تغییرات به چه درد کاربر می خوره. آیا SQL Server برای Undo کردن این تغییرات از این اطلاعات استفاده می کنه؟

esmit61
شنبه 27 آذر 1389, 20:36 عصر
اگرچه دستور DDL میتونه سرعت بیشتری به همراه داشته باشه، ولی مواردی هست که براش دستور DDL مستقیم نداریم و SSMS کار رو را راحت میکنه. مثل تغییر خصوصیت Identity برای یک فیلد، که باید جدول دوباره ساخته بشه. از اونجاییکه دستور صریح DDL برای این کار وجود نداره، طی چند Step باید انجامش داد. SSMS میتونه کدش رو Generate کنه براتون.
ارتباط جوابتون رو با سوالم متوجه نشدم. میشه بیشتر توضیح بدید؟
این توضیح شما یعنی SMSS فقط کار رو راحت تر میکنه. من سوالم یه چیز دیگه ای بود.
یعنی منظورم اینه که چه دلیلی داره که مایکروسافت همچین خط مشی رو در پیش بگیره ؟
ممنونم

AminSobati
یک شنبه 28 آذر 1389, 00:11 صبح
دوستان از توجهتون ممنون،
لینکی که اقای صادقیان پیشنهاد دادن رو خوندم. این لینک به این موضوع اشاره کرده که قابلیت Change Tracking feature تغییرات اعمال شده توسط کاربر بر روی جدول رو تعقیب یا Track می کنه. این یک قابلیت برای SQL Server 2008 محسوب می شه (Change Tracking feature ). این لینک میگه که اگر جدول از نو ایجاد بشه یک ریسک وجود داره و اون هم اینه که تغییرات ثبت شده توسط Change Tracking feature از دست می ره اما ثبت این تغییرات به چه درد کاربر می خوره. آیا SQL Server برای Undo کردن این تغییرات از این اطلاعات استفاده می کنه؟

Change Tracking میتونه تغییرات رخ داده روی جدول رو نسبت به زمانی که آخرین بار ازش کوئری گرفتین نشون بده. در Books Online توضیحات کافی وجود داره

AminSobati
یک شنبه 28 آذر 1389, 00:14 صبح
ارتباط جوابتون رو با سوالم متوجه نشدم. میشه بیشتر توضیح بدید؟
این توضیح شما یعنی SMSS فقط کار رو راحت تر میکنه. من سوالم یه چیز دیگه ای بود.
یعنی منظورم اینه که چه دلیلی داره که مایکروسافت همچین خط مشی رو در پیش بگیره ؟
ممنونم

عرض کردم، جواب به این سوال که آیا این یک خط مشی هست یا چیز دیگه مشکله. من اطلاعی ندارم.
ولی استفاه از SSMS و DDL مستقیم هر کدوم در جای خود میتونن کاربرد داشته باشن.