我想在Windows窗体应用程序中备份数据库。 我已经将引用添加到所有4个ddls
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.SmoExtended.dll
我的代码是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SqlServer.Server;
using Microsoft.SqlServer.Management.Sdk.Sfc;
using Microsoft.SqlServer.Smo;
using Microsoft.SqlServer.Smo.SmoExtended;
namespace Lodging
{
class BackupAndRestoreData
{
public static void BackupDatabase(string backUpFile)
{
ServerConnection con = new ServerConnection(@"ANI-PC\SQLEXPRESS");
Server server = new Server(con);
Backup source = new Backup();
source.Action = BackupActionType.Database;
source.Database = "db_Lodge";
BackupDeviceItem destination = new BackupDeviceItem(backUpFile,
DeviceType.File);
source.Devices.Add(destination);
source.SqlBackup(server);
con.Disconnect();
}
public static void RestoreDatabase(string backUpFile)
{
ServerConnection con = new ServerConnection(@"ANI-PC\SQLEXPRESS");
Server server = new Server(con);
Restore destination = new Restore();
destination.Action = RestoreActionType.Database;
destination.Database = "MyDataBaseName";
BackupDeviceItem source = new BackupDeviceItem(backUpFile,
DeviceType.File);
destination.Devices.Add(source);
destination.ReplaceDatabase = true;
destination.SqlRestore(server);
}
}
}
这不会给我错误
using Microsoft.SqlServer.Server;
using Microsoft.SqlServer.Management.Sdk.Sfc;
但是错误:
类型或命名空间名称' Smo'名称空间中不存在Microsoft.SqlServer' (你错过了一个程序集引用吗?)
的
using Microsoft.SqlServer.Smo;
using Microsoft.SqlServer.Smo.SmoExtended;
我该怎么做才能消除此错误?
答案 0 :(得分:1)
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
尝试这两个名称空间。
的链接Microsoft.SqlServer.Management.Smo命名空间包含实例 表示SQL Server数据库引擎对象和的对象类 一些表示特定任务的实用程序类,例如脚本。 连接到SQL Server数据库引擎的实例时 已经通过使用Server对象变量建立了对象 可以使用SMO实例对象访问实例。对于 例如,您可以使用Database对象访问数据库 连接的SQL Server数据库引擎实例。所有的实例 类与对象层次结构中的Server类相关。 实用程序类存在于Server类对象层次结构之外 表示特定任务,例如备份或脚本。
普通也被广泛使用我建议你阅读它。
答案 1 :(得分:0)
不确定这是否对您有所帮助,但是对于编译错误:
命名空间中不存在类型或命名空间名称“XYZ” 'ABC.DEF'(你错过了汇编参考吗?)
我发现以下原因导致该编译错误:
1)如果程序集的目标是稍后的.NET框架(例如4.5),并且您从面向早期.NET框架的应用程序(例如4.0)中引用程序集,那么您可能会遇到此问题。
2)有时,“Client Profile”.NET框架项目无法引用完整的.NET版本程序集,因为Client Profile .NET框架是.NET框架的精简版本。
答案 2 :(得分:0)
SQL Server Management Objects (SMO) Framework是一组对象,旨在对Microsoft SQL Server和Microsoft Azure SQL数据库进行编程管理。
明确指定2017年之前的SQL Server版本时,请安装SQL Server Feature Pack(更多信息in this answer)。
对于SQL Server 2017及更高版本,将SMO作为NuGet软件包安装为per this answer。