2

我有一个面向 .NET 4.5 的 Windows 窗体应用程序。该应用程序提供了使用 SQL Server 管理对象 (SMO) 进行程序化数据库备份和还原的功能。

该应用程序应支持 SQL Server 2008 R2 和 SQL Server 2012 的 Express 版本,因为它仅使用两个版本都支持的功能。

现在,项目中要引用的 SMO 程序集(Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtended等)将位于不同的文件夹中,具体取决于客户端安装的 SQL Server 版本

SQL Server Express 2008 R2: C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies

SQL Server Express 2012: C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies

如您所见,当客户端运行 2008 R2 时,程序集将位于该100\SDK文件夹中,而对于那些想要运行 SQL Server 2012 的程序集,它们将位于该110\SDK文件夹中。

因此,如果我引用该100\SDK文件夹,则应用程序将对运行 SQL Server 2012 的客户端中断,因为它们只有该110\SDK文件夹。

那么这种情况一般是如何处理的呢?

4

1 回答 1

3

如果要开发使用 SQL Server 管理对象 (SMO) 的应用程序,则应在安装 SQL Server 时选择客户端工具 SDK。

要在不安装 SQL Server 的情况下安装 Client Tooks SDK,请安装 SQL Server 功能包中的共享管理对象。

如果要确保 SQL Server 管理对象安装在将运行应用程序的计算机上,可以使用 SQL Server 功能包中的共享管理对象 .msi。

来源:安装 SMO - SQL Server 2012

按照带下划线的段落,我想我总是可以在客户端机器上安装一个通用的共享管理对象 msi,而不管正在运行的 sql server 版本如何。

于 2012-12-04T11:25:05.470 回答