PDA

View Full Version : سوال: معنی این رشته اتصال در Restore چیه؟



دلتنگ اسمان
سه شنبه 04 شهریور 1393, 13:51 عصر
سلام.
یه کد در جایی دیدم درباره Restore کردن بانک اطلاعاتی SQL . حالا خط اول این رشته اتصال رو متوجه نمیشم . لطفا یکی توضیح بده. ممنون

com.CommandText = "ALTER DATABASE hesabDB SET SINGLE_USER with ROLLBACK IMMEDIATE use master "
+ " RESTORE DATABASE hesabDB FROM DISK='" + strFileName + "'";

erfan_urchin
سه شنبه 04 شهریور 1393, 16:21 عصر
سلام
دوست عزیز شما وقتی یه برنامه مینویسی که مثلا صفحه اولش باید کاربر یوزر و پسورد وارد کنه تا وارد برنامه بشه. وقتی کاربر یوزر و پسورد رو وارد میکنه برنامه به دیتابیس وصل میشه و چک میکنه که همچین کاربری وجود داره یا نه.
حالا اگه این کاربر وجود داشته باشه وارد صفحه اصلی برنامه میشه. حالا فرض کنید کاربر بخواد از داخل برنامه دیتابیسش رو restore کنه. اونوقت برنامه این ارور رو میده :
Cannot drop database “YourDbName” because it is currently in use
راست هم میگه چون شما برای چک کردن یوزر و پسورد از دیتابیس استفاده کردین. شما با کد خط اول میتونین دیتابیس رو یه جورایی خلاصش کنید و و دیتابیسش رو restore کنید
موفق باشید

veniz2008
سه شنبه 04 شهریور 1393, 17:14 عصر
سلام.
یه کد در جایی دیدم درباره Restore کردن بانک اطلاعاتی SQL . حالا خط اول این رشته اتصال رو متوجه نمیشم . لطفا یکی توضیح بده. ممنون

com.CommandText = "ALTER DATABASE hesabDB SET SINGLE_USER with ROLLBACK IMMEDIATE use master "
+ " RESTORE DATABASE hesabDB FROM DISK='" + strFileName + "'";
سلام.
کلمه Alter برای ایجاد تغییرات (چه در دیتابیس، چه در جداول و ...) استفاده میشه.
از Single_User برای حالاتی استفاده میشه که یوزرهای متعددی به دیتابیس دسترسی دارند (برای دیتابیس User های متعددی با یوزرنیم و پسورد تعریف شده) و می خوایم دسترسی به دیتابیس رو انحصارا" در اختیار User جاری قرار بدیم و سایر کاربران موقتا و تا هنگام Resoter کردن دیتابیس دسترسی به اون دیتابیس رو نداشته باشن.
With RollBack Immediate باعث میشه تمامی کانکشن های متصل و فعال به دیتابیس رو قطع کنیم چون وقتی قصد Restore کردن یک دیتابیس رو داریم، دیتابیس نمی تونه در حالت استفاده باشه و برای این منظور ابتدا کانکشن های متصل به اون دیتابیس رو با این عبارت قطع می کنن.
Use Master : از دیتابیس master استفاده کن. دیتابیس master یک دیتابیس Sample ( نمونه) هست که همراه خود Sql Server نصب میشه و بسیاری از اطلاعات جانبی که در هنگام کار با دیتابیس های SQL انجام می دیم درون این دیتابیس ذخیره میشه (بدون اینکه ما متوجه بشیم).
From Disk هم آدرسی هست که فایل Backup شما در این مسیر قرار داره و از روی این فایل قصد Restore کردن دیتابیس رو دارید.
پس معنای کلی عبارت این میشه :
دیتابیس رو به حالت تک کاربره (انحصاری برای کاربر جاری) ببر و تمامی کانکشن های متصل به اون رو قطع کن. سپس از دیتابیس master استفاده کن و اقدام به Restore کردن دیتابیس از مسیر داده شده (From Disk) کن.
معمولا در انتهای این دستور (که عمل Restore با موفقیت تموم شده) دوباره دیتابیس رو با دستور Alter این بار به حالت Multi_User می برن تا دوباره دیتابیس برای همه کاربران قابل دسترسی و استفاده باشه.
موفق باشید.