SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口,所以它可以执行很多功能,其中当然也包括对数据库的备份和恢复。
当然要用到 sqldmo 来做这个工作
找到 sqldmo.dll这个文件
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll
用.Net框架提供的工具转成受托管代码
tlbimp sqldmo.dll /out: c:\SQLDMO.dll
1
usingSystem;
2
3
namespaceDbService
4

{
5
/**////<summary>
6
///DbOper类,主要应用SQLDMO实现对MicrosoftSQLServer数据库的备份和恢复
7
///</summary>
8
publicsealedclassDbOper
9

{
10
/**////<summary>
11
///DbOper类的构造函数
12
///</summary>
13
privateDbOper()
14

{
15
}
16
17
/**////<summary>
18
///数据库备份
19
///</summary>
20
publicstaticvoidDbBackup()
21

{
22
SQLDMO.BackupoBackup=newSQLDMO.BackupClass();
23
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
24
try
25

{
26
oSQLServer.LoginSecure=false;
27
oSQLServer.Connect("localhost","sa","1234");
28
oBackup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
29
oBackup.Database="Northwind";
30
oBackup.Files=@"d:\Northwind.bak";
31
oBackup.BackupSetName="Northwind";
32
oBackup.BackupSetDescription="数据库备份";
33
oBackup.Initialize=true;
34
oBackup.SQLBackup(oSQLServer);
35
}
36
catch
37

{
38
throw;
39
}
40
finally
41

{
42
oSQLServer.DisConnect();
43
}
44
}
45
46
/**////<summary>
47
///数据库恢复
48
///</summary>
49
publicstaticvoidDbRestore()
50

{
51
SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();
52
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
53
try
54

{
55
oSQLServer.LoginSecure=false;
56
oSQLServer.Connect("localhost","sa","1234");
57
oRestore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
58
oRestore.Database="Northwind";
59
oRestore.Files=@"d:\Northwind.bak";
60
oRestore.FileNumber=1;
61
oRestore.ReplaceDatabase=true;
62
oRestore.SQLRestore(oSQLServer);
63
}
64
catch
65

{
66
throw;
67
}
68
finally
69

{
70
oSQLServer.DisConnect();
71
}
72
}
73
}
74
}
75
usingSystem;2

3
namespaceDbService4


{5

/**////<summary>6
///DbOper类,主要应用SQLDMO实现对MicrosoftSQLServer数据库的备份和恢复7
///</summary>8
publicsealedclassDbOper9


{10

/**////<summary>11
///DbOper类的构造函数12
///</summary>13
privateDbOper()14


{15
}16

17

/**////<summary>18
///数据库备份19
///</summary>20
publicstaticvoidDbBackup()21


{22
SQLDMO.BackupoBackup=newSQLDMO.BackupClass();23
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();24
try25


{26
oSQLServer.LoginSecure=false;27
oSQLServer.Connect("localhost","sa","1234");28
oBackup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;29
oBackup.Database="Northwind";30
oBackup.Files=@"d:\Northwind.bak";31
oBackup.BackupSetName="Northwind";32
oBackup.BackupSetDescription="数据库备份";33
oBackup.Initialize=true;34
oBackup.SQLBackup(oSQLServer);35
}36
catch37


{38
throw;39
}40
finally41


{42
oSQLServer.DisConnect();43
}44
}45

46

/**////<summary>47
///数据库恢复48
///</summary>49
publicstaticvoidDbRestore()50


{51
SQLDMO.RestoreoRestore=newSQLDMO.RestoreClass();52
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();53
try54


{55
oSQLServer.LoginSecure=false;56
oSQLServer.Connect("localhost","sa","1234");57
oRestore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;58
oRestore.Database="Northwind";59
oRestore.Files=@"d:\Northwind.bak";60
oRestore.FileNumber=1;61
oRestore.ReplaceDatabase=true;62
oRestore.SQLRestore(oSQLServer);63
}64
catch65


{66
throw;67
}68
finally69


{70
oSQLServer.DisConnect();71
}72
}73
}74
}75

648

被折叠的 条评论
为什么被折叠?



