منتدى فيجوال بيسك



نتائج مسابقة المقالات الربع الثاني 2010 - الإنتهاء: 27-09-10

كاميليا - الإنتهاء: 31-10-10

عـودة للخلف   منتدى فيجوال بيسك > قسم المقالات > قسم مقالات C#

قسم مقالات C# قسم مقالات C#

الرد على الموضوع
 
أدوات الموضوع طريقة العرض
قديم 10-09-09   #1
Mohamed Gamal El-Din
مراقب تقني
 
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5
Mohamed Gamal El-Din عضو متوسطMohamed Gamal El-Din عضو متوسط
الافتراضي Backup and Restore SQl Server DB by c#

السلام عليكم ورحمة الله وبركاته
في هذا المقال سوف اتحدت عن كيفية عمل 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
}

}
2) عمل backup

رمز:
/// 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 غير متصل   الرد باقتباس
الأعضاء التالين شكروا 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)
قديم 19-01-10   #2
fateh
عضو
 
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3
fateh is on a distinguished road
الافتراضي

هناك مشكلة تواجهني عند عملية الrestore فيجب أن لا تكون الdataset مفتوحة
والاتصال جاري بقاعدة البيانات التي أقوم باسترجاعها
علما بانني أستعمال الdesgin mode لربط جداول قاعدة البيانات
العملية تنجح فقط عندما لم يتم فتح أي فورم به قاعدة بيانات

والسؤال المطروح هنا :
كيف يتم غلق الاتصال الجاري من أجل عملية الاسترجاع
مع العلم ان غلق الفورم لا يغلق الاتصال
fateh غير متصل   الرد باقتباس
قديم 19-01-10   #3
Mohamed Gamal El-Din
مراقب تقني
 
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5
Mohamed Gamal El-Din عضو متوسطMohamed Gamal El-Din عضو متوسط
الافتراضي

http://wiki.lessthandot.com/index.ph..._To_A_Database
__________________
Mohamed Gamal El-Din
http://mgamal-ms.blogspot.com
http:/FCI-H.blogspot.com

لا اله الا الله .... محمد رسول الله
Mohamed Gamal El-Din غير متصل   الرد باقتباس
قديم 08-02-10   #4
iAGx
عضو
 
تاريخ التسجيل: Jul 2009
المشاركات: 91
عدد مرات شكره للأعضاء: 68
تم شكره 42 مره في 14 مشاركه
قوة التقييم: 2
iAGx is on a distinguished road
الافتراضي

اقتباس:
المشاركة الأصلية بواسطة fateh مشاهدة المشاركة
هناك مشكلة تواجهني عند عملية الrestore فيجب أن لا تكون الdataset مفتوحة
والاتصال جاري بقاعدة البيانات التي أقوم باسترجاعها
علما بانني أستعمال الdesgin mode لربط جداول قاعدة البيانات
العملية تنجح فقط عندما لم يتم فتح أي فورم به قاعدة بيانات

والسؤال المطروح هنا :
كيف يتم غلق الاتصال الجاري من أجل عملية الاسترجاع
مع العلم ان غلق الفورم لا يغلق الاتصال
يمكنك تنفيذ جملة استخدام لقاعدة بيانات اخرى مثلا :
Use Master ; , ثم تنفيذ عملية الاسترجاع , و بالتالي تفقد الاتصال مع قاعدة البيانات الحالية .

أخي Mohamed Gamal El-Din لا أعلم لماذا كل هذه الشفرة إذا كنت أستطيع اعمل النسخ و الاسترجاع من خلال T-SQL . أنا ما أعترض على الفكرة , بس ليش هذا كلو .. , ممكن اسوي شي زي كدة :


الرمز PHP:
BACKUP  --
BACKUP DATABASE DataBaseName 
TO  DISK 
'G:\DataBaseName.back' 
WITH INIT  GO 


الرمز PHP:
RESTORE DATABASE DataBaseName 
FROM DISK 
'G:\DataBaseName.back'
 
WITH NORECOVERY GO 
__________________
مدونة انا سي شارب
http://www.imcsharp.info

عُدلت بواسطة iAGx; 08-02-10 الساعة 01:56 AM
iAGx غير متصل   الرد باقتباس
قديم 08-02-10   #5
Mohamed Gamal El-Din
مراقب تقني
 
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5
Mohamed Gamal El-Din عضو متوسطMohamed Gamal El-Din عضو متوسط
الافتراضي

No problems with that. yet another way
__________________
Mohamed Gamal El-Din
http://mgamal-ms.blogspot.com
http:/FCI-H.blogspot.com

لا اله الا الله .... محمد رسول الله
Mohamed Gamal El-Din غير متصل   الرد باقتباس
قديم 14-02-10   #6
fateh
عضو
 
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3
fateh is on a distinguished road
الافتراضي

لقد جربت عمل backup لقاعدة بيانات قمت بالاتصال بها على الشبكة
لكن الطريقة لم تنجح
fateh غير متصل   الرد باقتباس
قديم 14-02-10   #7
Mohamed Gamal El-Din
مراقب تقني
 
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5
Mohamed Gamal El-Din عضو متوسطMohamed Gamal El-Din عضو متوسط
الافتراضي

What is the error ?
__________________
Mohamed Gamal El-Din
http://mgamal-ms.blogspot.com
http:/FCI-H.blogspot.com

لا اله الا الله .... محمد رسول الله
Mohamed Gamal El-Din غير متصل   الرد باقتباس
قديم 15-02-10   #8
fateh
عضو
 
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3
fateh is on a distinguished road
الافتراضي

اقتباس:
المشاركة الأصلية بواسطة Mohamed Gamal El-Din مشاهدة المشاركة
What is the error ?
رمز:
can't backup from server '.....'

أظنها رسالة الحطأ

على العموم أرجو استعمال اللغة العربية (جوجل يستطيع الكتابة بالعربية )
fateh غير متصل   الرد باقتباس
قديم 15-02-10   #9
Mohamed Gamal El-Din
مراقب تقني
 
تاريخ التسجيل: May 2007
المشاركات: 232
عدد مرات شكره للأعضاء: 1
تم شكره 30 مره في 17 مشاركه
قوة التقييم: 5
Mohamed Gamal El-Din عضو متوسطMohamed Gamal El-Din عضو متوسط
الافتراضي

تأكد من اسم السيرفر اللي إنت كاتبه
__________________
Mohamed Gamal El-Din
http://mgamal-ms.blogspot.com
http:/FCI-H.blogspot.com

لا اله الا الله .... محمد رسول الله
Mohamed Gamal El-Din غير متصل   الرد باقتباس
قديم 15-02-10   #10
fateh
عضو
 
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3
fateh is on a distinguished road
الافتراضي

اقتباس:
المشاركة الأصلية بواسطة Mohamed Gamal El-Din مشاهدة المشاركة
تأكد من اسم السيرفر اللي إنت كاتبه
الاسم صحيح لانه يظهر مكان النقاط بين '..'
استعمل نسخة الاكسبرس 2005 للSQL server
وقمت بالاتصال داخل الشبكة بدون مشاكل
لكن عملية الbackup لا تنفذ
fateh غير متصل   الرد باقتباس
قديم 16-02-10   #11
fateh
عضو
 
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3
fateh is on a distinguished road
الافتراضي

أظنني اكتشفت الخطأ
عملية تسجيل الbackup تتم على السرفر وليس على جهاز العميل لذلك لا تتم العملية اذا لم يوجد مجلد بنفس المسار الذي تم اختياره على جهاز العميل

لكن الآن كيف يمكنني الاسترجاع وانا لا أستطيع الوصول إلى جهاز السرفر ؟
fateh غير متصل   الرد باقتباس
قديم 18-02-10   #12
fateh
عضو
 
تاريخ التسجيل: Oct 2007
المشاركات: 187
عدد مرات شكره للأعضاء: 0
تم شكره 8 مره في 7 مشاركه
قوة التقييم: 3
fateh is on a distinguished road
الافتراضي



بالاستعراض يمكن ان أجد قائمة الbackups التي عملتها على قاعدة البيانات
أريد أن أستعرض نفس القائمة
fateh غير متصل   الرد باقتباس
قديم 08-06-10   #13
essam223
عضو جديد
 
تاريخ التسجيل: Dec 2009
المشاركات: 26
عدد مرات شكره للأعضاء: 0
تم شكره 0 مره في 0 مشاركه
قوة التقييم: 0
essam223 is on a distinguished road
الافتراضي

لو سحت يا اخويا

ممكن تعمل لنا مثال حى و ترفقة لنا فى مشاركتك

علشان الحكاية كدة مش واضحةخالص

و شكرا
essam223 غير متصل   الرد باقتباس
الرد على الموضوع


يتصفح الموضوع حالياً: 1 (0 عضو و 1 ضيف)
 
أدوات الموضوع
طريقة العرض

قوانين المشاركة
لا يمكنك إضافة مواضيع
لا يمكنك إضافة ردود
لا يمكنك إضافة مرفقات
لا يمكنك تعديل مشاركاتك

رمز [IMG] متاح
رموز HTML مغلق
انتقل إلى


الساعة الآن +3: 06:54 PM.



إعلانات نصية: القرآن  الإسلام  السنة   رسول الله    صيد الفوائد طريق الإسلام   إبن باز  إبن عثيمين الإسلام سؤال وجواب  المسلم  الإسلام اليوم  البث الإسلامي    طريق القرآن   المصحف الشريف بالفلاش  رسالة الإسلام كلمات  طريق الإيمان    قناة المجد المجهر   سلطان    الراصد  البينة  البرهان  الفرقان قصة الإسلام أسرة نت دليل المواقع منتدى مكتوب

Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
هذا المنتدى يستخدم منتجات بلص
جميع الحقوق محفوظة لموقع فيجوال بيسك للعرب vb4arab.com