C#SMO和SqlEnum引用错误

Abr*_*sef 3 .net c# sql-server smo

我正在做一个VS2013使用smoobject 的C#项目.我安装了

Install-Package Microsoft.SqlServer.Scripting
Install-Package Microsoft.SqlServer.SqlEnum.dll
Run Code Online (Sandbox Code Playgroud)

通过 Nuget

并包括在内

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo.Agent;
Run Code Online (Sandbox Code Playgroud)

但得到以下错误

错误9程序集'Microsoft.SqlServer.Smo,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'使用'Microsoft.SqlServer.SqlEnum,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'哪个更高版本比引用的程序集'Microsoft.SqlServer.SqlEnum,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'

任何一只手?

Voj*_*nal 6

问题是SmoSqlEnum组件之间的版本不匹配,正如异常所指定的那样.问题是您使用Install-Package Microsoft.SqlServer.SqlEnum.dll的包是SQL Server 2008的旧包.

(Microsoft.SqlServer.SqlEnum.dll, Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll)在SQL Server安装文件夹中有包含必要DLL文件的文件夹:

  • SQL Server 2012 C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies
  • SQL Server 2014,2016 C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies

您可以在一个包中安装Nuget所需的所有DLL:

2012:https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO/

2014:https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/

包含的DLL:Microsoft.SqlServer.ConnectionInfo.dll,Microsoft.SqlServer.ConnectionInfoExtended.dll,Microsoft.SqlServer.Management.Sdk.Sfc.dll, Microsoft.SqlServer.Smo.dll,Microsoft.SqlServer.SmoExtended.dll,Microsoft.SqlServer .SqlClrProvider.dll, Microsoft.SqlServer.SqlEnum.dll

您应该使用创建引用时使用的文件夹中的Microsoft.SqlServer.SqlEnum.dll&Microsoft.SqlServer.ConnectionInfo.dllfile .或者您应该从NuGet安装匹配的程序集.版本11.0.0.0的DLL代表SQL Server 2014.SDK\AssembliesMicrosoft.SqlServer.Smo

请参阅文件和版本号以及在Visual Studio .NET中创建Visual C#SMO项目.

如果您只从NuGet安装一个正确的软件包,如https://www.nuget.org/packages/Unofficial.Microsoft.SQLServer.SMO.2014/,那么您应该没问题.