logo
Hoşgeldiniz! Forumun bütün özelliklerini kullanmak için lütfen Giriş ya da Kayıt.

Bildirim

Icon
Error

Kod ile DB backup ve restore işlemi
@butun Offline
#1 Gönderildi : 20 Ağustos 2009 Perşembe 15:39:32(UTC)
@butun



Sıralama: Yönetici

Madalyalar:
Anahtar Kişi: Forumda anahtar rol oynayan kullanıcılara verilirAltın Madalya: Forumda üstün hizmetleri olan kullanıcılara verilirKod Erişimi: Forum kodlarına doğrudan erişimi bulunan kullanıcılara verilirVeritabanı Erişimi: Forum veri tabanına doğrudan erişimi olan kullanıcılara verilirSistemin Efendisi: Sisteminin tamamına hükmeden kullanıcılara verilir

Mesajlar: 1,838
Puanlar: 12,640
Konum: Istanbul

Thanks: 12 times
17 Mesajına Toplam 25 Kere Teşekkür Edildi.

Merhaba arkdaşlar,

C# kullanarak DB backup ve restore işlemleri için SQL Server 2008'in bize sağladığı,

Microsoft.SqlServer.Management.Smo
Microsoft.SqlServer.Management.Common

referanslarını kullanabilirsiniz. Nasıl mı? Şöyle ki,


Backup işlemi:
Kod:

private void BackUp()
{
try
{
string filename = "MyDBBackup.bak";

Server server = new Server(new ServerConnection(new System.Data.SqlClient.SqlConnection("MyDBConnStr")));

// Create a new backup operation
Backup bkpDatabase = new Backup();

// Set the backup type to a database backup
bkpDatabase.Action = BackupActionType.Database;

// Set the database that we want to perform a backup on
bkpDatabase.Database = "MyDBName"

// Set the backup device to a file
BackupDeviceItem bkpDevice = new BackupDeviceItem(filename, DeviceType.File);

// Add the backup device to the backup
bkpDatabase.Devices.Add(bkpDevice);

bkpDatabase.PercentComplete += new PercentCompleteEventHandler("BackupPercentaceCallBack");

// Perform the backup
bkpDatabase.SqlBackup(server);
}
catch (Exception ex)
{
//NOP
}
}



Restore işlemi için:
Kod:

private void Restore()
{
//Restore
try
{
Server server = new Server(new ServerConnection(new System.Data.SqlClient.SqlConnection("MyDBConnStr")));

string filepath = "MyDBBackup.bak";

if (filepath != "")
{
if (File.Exists(filepath))
{
// Create a new database restore operation
Restore rstDatabase = new Restore();

// Set the restore type to a database restore
rstDatabase.Action = RestoreActionType.Database;

// Set the database that we want to perform the restore on
rstDatabase.Database = "MyDBName";

// Set the backup device from which we want to restore, to a file
BackupDeviceItem bkpDevice = new BackupDeviceItem(filepath, DeviceType.File);

// Add the backup device to the restore type
rstDatabase.Devices.Add(bkpDevice);

// If the database already exists, replace it
rstDatabase.ReplaceDatabase = true;

rstDatabase.PercentComplete += new PercentCompleteEventHandler(RestorePercentaceCallBack);

server.KillAllProcesses("MyDBName");

rstDatabase.Wait();

// Perform the restore
rstDatabase.SqlRestore(server);

Application.Restart();
}
}
}
catch (Exception ex)
{
//NOP
}
}
@butun Offline
#2 Gönderildi : 20 Ağustos 2009 Perşembe 15:44:39(UTC)
@butun



Sıralama: Yönetici

Madalyalar:
Anahtar Kişi: Forumda anahtar rol oynayan kullanıcılara verilirAltın Madalya: Forumda üstün hizmetleri olan kullanıcılara verilirKod Erişimi: Forum kodlarına doğrudan erişimi bulunan kullanıcılara verilirVeritabanı Erişimi: Forum veri tabanına doğrudan erişimi olan kullanıcılara verilirSistemin Efendisi: Sisteminin tamamına hükmeden kullanıcılara verilir

Mesajlar: 1,838
Puanlar: 12,640
Konum: Istanbul

Thanks: 12 times
17 Mesajına Toplam 25 Kere Teşekkür Edildi.

Bir uyarı, kodlarda geçen (tümü kırmızı renkle belirtilmiş zaten),

MyDBBackup.bak -> yedek alınacak dosya adı
MyDBName -> Üzerind işlem yapılacak veri tabanı adı
BackupPercentaceCallBack -> Veri tabanı yedeklenirken kullanılacak event handler
MyDBConnStr -> Veri tabanı connection string değeri
RestorePercentaceCallBack -> Veri tabanı geri yüklenirken kullanılacak event handler


ve veri tabanı geri yüklenirken mutlaka DİKKAT edilmesi gereken bir nokta, geri yükleme işlemi yapılmadan önce, veri tabanındaki mevcut connection'ları kapatmak. Bunun için,


Kod:

server.KillAllProcesses("MyDBName");

rstDatabase.Wait();


kod satırlanını kullanmanız gerekiyor.

sorularınız için buralardayım, umarım faydalı olur bu bilgiler...
Bu konudaki kullanıcılar
Ziyaretçi
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.