PDA

View Full Version : سوال: به دست آوردن نام دیتابیس از فایل .bak



sadaf_
دوشنبه 05 دی 1390, 15:03 عصر
کاربر یک بکاپ از sql می گیره حالا می خوام از طریق فایل بکاپ بفهمم که نام دیتابیس چیه ؟
با کدنویسی چطوری می شه چنین کاری رو انجام داد؟

sayvan
دوشنبه 05 دی 1390, 17:53 عصر
دوست من, کاربر میتونه یه اسم دلخواه برای برای فایل پشتیبان وارد کند و از روی فایل نمیتونی تشخیص بدی که نام دیتابیست چه هست احتمالاً نام فایل رو میخواستی این کدی که نوشتم فقط نام فایلت رو میده بدون پسوندش
فرض کنیم که رشته یا همون مسیر فایلت رو داری
خط 1:کنترل OpenFileDialog رو میسازیم بعد در خط 2 اگر فایلت انتخاب شد
خط 4:نام فایل رو در یه متغییر رشته میزیریم
وقتی که رشته رو گرفتیم براساس دو تا کاراکتر .\ فایل رو تشخیص میدیم
خط پنج و شش اندیس کاراکتر ها رو در دو متغییر میریزه
بعدش با دستور SubString رشته مون نام فایل رو بر میگردونه
دوستان اگه راه حل دیگه ایی داشتن بنویسن

OpenFileDialog opf = new OpenFileDialog();
if (opf.ShowDialog() == DialogResult.OK)
{
string str = opf.FileName;
int t = str.LastIndexOf('\\');
int t1 = str.LastIndexOf('.');
textBox8.Text = str.Substring(t + 1, t1 - 1 - t);
}

Esmail Solhkhah
دوشنبه 05 دی 1390, 20:00 عصر
کاربر یک بکاپ از sql می گیره حالا می خوام از طریق فایل بکاپ بفهمم که نام دیتابیس چیه ؟
با کدنویسی چطوری می شه چنین کاری رو انجام داد؟

هدر فایل بکاپ شامل اطلاعات جامعی در مورد بکاپ مورد نظر هست منجمله : نام دیتابیس - نام کاربر - نام سرور - ورژن دیتابیس سرور - تاریخ شروع و پایان بکاپ و ...

میتونید از دستور TSQL زیر اطلاعات مربوطه رو از فایل بکاپ استخراج کنید

RESTORE HEADERONLY FROM DISK='e:\YourBackupFile.bak'

موفق باشید.

sadaf_
سه شنبه 06 دی 1390, 15:03 عصر
RESTORE HEADERONLY FROM DISK='e:\YourBackupFile.bak'


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

Esmail Solhkhah
سه شنبه 06 دی 1390, 22:12 عصر
این همه اطلاعات رو به من نشان می ده اگر بخواهیم با استفاده از همین دستور تنها یک مقدار رو به نمایش بده
باید چه دستوری رو اضافه کنیم
یعنی فقط نام دیتابیس رو نمایش بده

دستور فوق رو با استفاده از یه SQLCOMMAND اجرا کنید و با متد ExecuteReader آیتم مورد نظرتون رو بگیرید.