好的,我已经浏览过网络,BOL,各种论坛,而且我没有接近答案......希望你这些好人可以伸出援助之手......
我们在网络上有十几个SQL Server(大约2k,一些2005)。我在.NET应用程序中使用SMO对象来获取一些标准信息。我的问题似乎归结为一个丢失的DLL - Microsoft.SqlServer.BatchParser.dll。但是,此DLL没有附带其他SQL DLL(Microsoft.SqlServer.ConnectionInfo.dll,Microsoft.SqlServer.Smo.dll,Microsoft.SqlServer.SmoEnum.dll,Microsoft.SqlServer.SqlEnum.dll等...) 。我还从微软的网站下载了包含SMO对象的SS2005功能包,但仍然没有运气。
以下代码有效,除非我取消注释当前注释的行,在这种情况下我收到以下错误:
protected void btnArchive_Click(object sender, EventArgs e)
{
ServerConnection conn = new ServerConnection("my_server");
conn.LoginSecure = false;
conn.Login = "my_login";
conn.Password = "my_password";
Server s = new Server(conn);
Database d = s.Databases["my_database"];
//Table tbl = d.Tables["my_table"];
Response.Write(s.Name + " " + s.Information.RootDirectory + " " + d.CreateDate.ToShortDateString());
conn.Disconnect();
}
错误: 无法加载文件或程序集'Microsoft.SqlServer.BatchParser,Version = 9.0.242.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。系统找不到指定的文件。
注意,我也是使用VB.NET从SSIS尝试过的,同样的行为。
任何想法都会受到赞赏。
感谢。
答案 0 :(得分:10)
我能够使用10. *版本的程序集“Microsoft.SqlServer.ConnectionInfo”,“Microsoft.SqlServer.Management.Sdk.Sfc”和“Microsoft.SqlServer.Smo”成功运行代码。尝试下载2008 version of the SMO components,也许这是他们现在修复的错误。
答案 1 :(得分:6)
您是否在盒子上运行x64操作系统?在64位环境中似乎存在BatchParser.dll问题 - 通常建议从Microsoft下载SMO x64 Package(SQLServer2005_XMO_x64.msi)。
查看有关此here的信息。
答案 2 :(得分:4)
我知道我来这里的派对已经很晚了,但这仍然是你google" smo batchparser"的第一个结果。
安装SMO 2014(12.0.x)时,某些DLL仅安装到GAC。要使您的应用无需在目标服务器中手动安装SMO,您必须使用您的应用复制这些DLL。以下是我从中获取它们的路径。
C:\ Program Files \ Microsoft SQL Server \ 120 \ SDK \ Assemblies \ Microsoft.SqlServer.ConnectionInfo.dll
C:\ Program Files \ Microsoft SQL Server \ 120 \ SDK \ Assemblies \ Microsoft.SqlServer.Management.Sdk.Sfc.dll
C:\ Program Files \ Microsoft SQL Server \ 120 \ SDK \ Assemblies \ Microsoft.SqlServer.Smo.dll
C:\ Program Files \ Microsoft SQL Server \ 120 \ SDK \ Assemblies \ Microsoft.SqlServer.SmoExtended.dll
C:\ Program Files \ Microsoft SQL Server \ 120 \ SDK \ Assemblies \ Microsoft.SqlServer.SqlEnum.dll
C:\的Windows \组件\ GAC_64 \ Microsoft.SqlServer.BatchParser \ 12.0.0.0__89845dcd8080cc91 \ Microsoft.SqlServer.BatchParser.dll
C:\的Windows \组件\ GAC_MSIL \ Microsoft.SqlServer.BatchParserClient \ 12.0.0.0__89845dcd8080cc91 \ Microsoft.SqlServer.BatchParserClient.dll
C:\的Windows \组件\ GAC_MSIL \ Microsoft.SqlServer.SqlClrProvider \ 12.0.0.0__89845dcd8080cc91 \ Microsoft.SqlServer.SqlClrProvider.dll
要访问GAC文件,您需要使用this article提供的说明禁用Windows内置查看器。
为方便起见,该文章的摘录:
打开注册表编辑器并添加/设置HKLM \ Software \ Microsoft \ Fusion \ DisableCacheViewer DWORD值:1
答案 3 :(得分:3)
你需要安装以下软件包来解决这个问题,我已经用这个软件包解决了这个问题两次希望它也适用于所有人...
Microsoft SQL Server 2005管理对象集合管理对象集合包包括SQL Server 2005管理API的几个关键元素,包括分析管理对象(AMO),复制管理对象(RMO)和SQL Server管理对象(SMO) 。开发人员和DBA可以使用这些组件以编程方式管理SQL Server 2005。
您可以从Microsoft网站
获取Microsoft SQL Server 2005功能包 - 2008年12月http://www.microsoft.com/en-us/download/details.aspx?id=11988
但是如果您没有找到资源,下载页面的链接位置每次都会更改,您也可以从我的博客下载。
如果您需要http://rndp-android.blogspot.com/p/missing-microsoftsqlservermanagementsdk.html
,我还在博客中提供了一些有关此内容的提示和资源答案 4 :(得分:0)
正因为如此,我们正确理解了问题,Microsoft.SqlServer.BatchParser.dll未安装在开发计算机上的全局程序集缓存中?如果是这样,您可能希望从重新安装.NET Framework(您要定位的Framework的版本)开始,看看是否能解决问题。
您还可以尝试使用.NET Framework配置工具来查看程序集是否确实存在于全局程序集缓存(GAC)中。此MSDN Article介绍了如何使用此工具。
(搜索我的硬盘并没有返回Microsoft.SqlServer.BatchParser.dll程序集,即使我可以使用.NET Framework配置工具看到它。)
答案 5 :(得分:0)
它是2005或2008升级顾问的一部分。