![]() |
|
|
|
#1 |
|
مراقب تقني
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5 ![]() ![]() |
السلام عليكم ورحمة الله وبركاته
في هذا المقال سوف اتحدت عن كيفية عمل Backup و restore ل أي قاعدة بيانات SQL Server عن طريق ال C# مباشرة إلى الكود أول شيء هو يجب ان تضيف reference 1. Microsoft.SqlServer.ConnectionInfo 2. Microsoft.SqlServer.Smo -------------------------------------------------------------------- 1) عمل server connection للااتصال مع قاعدة البيانات رمز:
private static Server CreateServerConnection(string ServerIP, string SQLInstanceName, string userName, string password)
{
try
{
// Create a new connection to the selected server name
ServerConnection srvConn = new ServerConnection(ServerIP+ @"\" + SQLInstanceName);
// Log in using SQL authentication instead of Windows authentication
srvConn.LoginSecure = false;
// Give the login username
srvConn.Login = userName;
// Give the login password
srvConn.Password = password;
// Create a new SQL Server object using the connection we created
return new Server(srvConn);
}
catch (Exception ex)
{
// Handle Exceptions
}
}
رمز:
/// backUpFileName اسم الملف الناتج عن ال BackUp
///سيكون الملف على سبيل المثال MasterDB.bak
SQLInstanceName ///
اسم ال SQL instance
///DBName
اسم قاعدة البيانات المراد حفظها
//serverIP
ال IP Address حيث توجد ال sql server ... لو على نفس الكمبيوتر ممن يكن el-IP = .
/// userName
مثل sa, وهو اسم مستخدم على قاعدة البيانات للدخول عن طريق SQL Authentication
///password
كلمة الل مرور ل هذا المستخدم
public static void BackUpDB(string backUpFileName, string SQLInstanceName, string DBName, string serverIP, string userName, string password)
{
try
{
Backup bDatabase = new Backup();
// Set the backup type to a database backup
bDatabase.Action = BackupActionType.Database;
// Set the database that we want to perform a backup on
bDatabase.Database = DBName;
// Set the backup device to a file
BackupDeviceItem bkDevice = new BackupDeviceItem(backUpFileName, DeviceType.File);
// Add the backup device
bDatabase.Devices.Add(bkDevice);
//Check if the file exists
if (File.Exists(backUpFileName))
File.Delete(backUpFileName);
// Perform the backup
bDatabase.SqlBackup(CreateServerConnection(serverIP, SQLInstanceName, UserName, password));
}
catch (Exception ex)
{
// Handle Exceptions
}
}
3) Perform DB Restore رمز:
/// the .bak file
///
///
///
///
///
public static void RestoreDB(string restoreFileName, string SQLInstanceName, string DBName, string serverIP, string userName, string password)
{
try
{
Restore rDatabase = new Restore();
// Set the restore type to a database restore
rDatabase.Action = RestoreActionType.Database;
// Assign a db to restore operation
rDatabase.Database = DBName;
// Set the backup device to restore from file
BackupDeviceItem bkDevice = new BackupDeviceItem(restoreFileName, DeviceType.File);
// Add the backup device to the restore type
rDatabase.Devices.Add(bkDevice);
// Replace the Db if already exists
rDatabase.ReplaceDatabase = true;
if (File.Exists(restoreFileName))
// restore
rDatabase.SqlRestore(CreateServerConnection(serverIP, SQLInstanceName, userName, password));
}
catch (Exception ex)
{
// Handle Exceptions
}
}
آسف لو كان الفورمات مش مظبوط في المقالة دي وده بسبب العربي .. إن شاء الله أحاول اظبط أكتر من كده المقال القادم تم بحمد الله
__________________
Mohamed Gamal El-Din http://mgamal-ms.blogspot.com http:/FCI-H.blogspot.com لا اله الا الله .... محمد رسول الله عُدلت بواسطة Mohamed Gamal El-Din; 10-09-09 الساعة 08:40 AM |
|
|
|
| الأعضاء التالين شكروا Mohamed Gamal El-Din على هذا الموضوع : | أحمد جمال (10-09-09), أشرف المصري2 (15-12-09), Boutemine Oualid (10-09-09), iAGx (10-09-09), malol (11-11-09), Meeedo (10-09-09) |
|
|
#2 |
|
عضو
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3 ![]() |
هناك مشكلة تواجهني عند عملية الrestore فيجب أن لا تكون الdataset مفتوحة
والاتصال جاري بقاعدة البيانات التي أقوم باسترجاعها علما بانني أستعمال الdesgin mode لربط جداول قاعدة البيانات العملية تنجح فقط عندما لم يتم فتح أي فورم به قاعدة بيانات والسؤال المطروح هنا : كيف يتم غلق الاتصال الجاري من أجل عملية الاسترجاع مع العلم ان غلق الفورم لا يغلق الاتصال |
|
|
|
|
|
#3 |
|
مراقب تقني
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5 ![]() ![]() |
__________________
Mohamed Gamal El-Din http://mgamal-ms.blogspot.com http:/FCI-H.blogspot.com لا اله الا الله .... محمد رسول الله |
|
|
|
|
|
#4 | |
|
عضو
تاريخ التسجيل: Jul 2009
المشاركات: 91
عدد مرات شكره للأعضاء: 68
تم شكره 42 مره في 14 مشاركه
قوة التقييم: 2 ![]() |
اقتباس:
Use Master ; , ثم تنفيذ عملية الاسترجاع , و بالتالي تفقد الاتصال مع قاعدة البيانات الحالية . أخي Mohamed Gamal El-Din لا أعلم لماذا كل هذه الشفرة إذا كنت أستطيع اعمل النسخ و الاسترجاع من خلال T-SQL . أنا ما أعترض على الفكرة , بس ليش هذا كلو .. , ممكن اسوي شي زي كدة : الرمز PHP:
الرمز PHP:
__________________
مدونة انا سي شارب http://www.imcsharp.info عُدلت بواسطة iAGx; 08-02-10 الساعة 01:56 AM |
|
|
|
|
|
|
#5 |
|
مراقب تقني
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5 ![]() ![]() |
No problems with that. yet another way
__________________
Mohamed Gamal El-Din http://mgamal-ms.blogspot.com http:/FCI-H.blogspot.com لا اله الا الله .... محمد رسول الله |
|
|
|
|
|
#6 |
|
عضو
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3 ![]() |
لقد جربت عمل backup لقاعدة بيانات قمت بالاتصال بها على الشبكة
لكن الطريقة لم تنجح |
|
|
|
|
|
#7 |
|
مراقب تقني
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5 ![]() ![]() |
What is the error ?
__________________
Mohamed Gamal El-Din http://mgamal-ms.blogspot.com http:/FCI-H.blogspot.com لا اله الا الله .... محمد رسول الله |
|
|
|
|
|
#8 |
|
عضو
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3 ![]() |
|
|
|
|
|
|
#9 |
|
مراقب تقني
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5 ![]() ![]() |
تأكد من اسم السيرفر اللي إنت كاتبه
__________________
Mohamed Gamal El-Din http://mgamal-ms.blogspot.com http:/FCI-H.blogspot.com لا اله الا الله .... محمد رسول الله |
|
|
|
|
|
#10 |
|
عضو
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3 ![]() |
|
|
|
|
|
|
#11 |
|
عضو
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3 ![]() |
أظنني اكتشفت الخطأ
عملية تسجيل الbackup تتم على السرفر وليس على جهاز العميل لذلك لا تتم العملية اذا لم يوجد مجلد بنفس المسار الذي تم اختياره على جهاز العميل لكن الآن كيف يمكنني الاسترجاع وانا لا أستطيع الوصول إلى جهاز السرفر ؟ |
|
|
|
|
|
#12 |
|
عضو
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3 ![]() |
بالاستعراض يمكن ان أجد قائمة الbackups التي عملتها على قاعدة البيانات أريد أن أستعرض نفس القائمة |
|
|
|
|
|
#13 |
|
عضو جديد
تاريخ التسجيل: Dec 2009
المشاركات: 26
عدد مرات شكره للأعضاء: 0
تم شكره 0 مره في 0 مشاركه
قوة التقييم: 0 ![]() |
لو سحت يا اخويا
ممكن تعمل لنا مثال حى و ترفقة لنا فى مشاركتك علشان الحكاية كدة مش واضحةخالص و شكرا |
|
|
|
![]() |
| يتصفح الموضوع حالياً: 1 (0 عضو و 1 ضيف) | |
| أدوات الموضوع | |
| طريقة العرض | |
|
|