【问题标题】:Application cannot find Microsoft.SQLServer.SMO on SQL 2008 machine应用程序在 SQL 2008 机器上找不到 Microsoft.SQLServer.SMO
【发布时间】:2009-07-01 07:52:46
【问题描述】:

我有使用 Microsoft.SqlServer.Management.Smo 的代码。 (内置于 Visual Studio 2005 SP1) 它在 SQL 2000 和 SQL 2005 机器上运行良好。 但是当它在 SQL 2008 机器上运行时会抛出异常:

System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.SqlServer.Smo,Version=9.0.242.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91”或其依赖项之一。该系统找不到指定的文件。 文件名:'Microsoft.SqlServer.Smo, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'

=== LOG:此绑定在默认加载上下文中开始。 LOG:未找到应用程序配置文件。 LOG:使用 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config 中的机器配置文件。 LOG:后策略参考:Microsoft.SqlServer.Smo,Version=9.0.242.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91 日志:正在尝试下载新的 URL 文件:///C:/Documents and Settings/Automation/Desktop/Debug/Microsoft.SqlServer.Smo.DLL。 日志:正在尝试下载新的 URL 文件:///C:/Documents and Settings/Automation/Desktop/Debug/Microsoft.SqlServer.Smo/Microsoft.SqlServer.Smo.DLL。 日志:正在尝试下载新的 URL 文件:///C:/Documents and Settings/Automation/Desktop/Debug/Microsoft.SqlServer.Smo.EXE。 日志:正在尝试下载新的 URL 文件:///C:/Documents and Settings/Automation/Desktop/Debug/Microsoft.SqlServer.Smo/Microsoft.SqlServer.Smo.EXE。

我已经安装了 SQL 2005 向后兼容包(针对 SQL 2008 更新)和 SQL 管理对象(针对 SQL 2008 更新)

任何建议。

我查看了SQL Server SMO complains of missing DLL,但帮助不大。

【问题讨论】:

    标签: sql-server-2008 object sqldmo


    【解决方案1】:

    我发现了问题。我在构建项目时引用了 SQL 2005 SDK DLL。我删除了所有引用并再次添加了引用(现在指向 SQL 2008 dlls 视图帖子:http://msdn.microsoft.com/en-us/library/ms162129.aspx)以获取要添加的引用列表。 此外,目标计算机需要安装 Microsoft SQL Server 2005 向后兼容组件和 Microsoft SQL Server 2008 管理对象和 SQL Server 系统 CLR 类型 (2008)。

    【讨论】:

      【解决方案2】:

      查看Microsoft SQL Server 2008 Feature Pack, April 2009 的“Microsoft SQL Server 2008 管理对象”部分(确保您已安装 SQL Server 2008 Service Pack 1)

      【讨论】:

      • 我已经安装了 Microsoft SQL Server 2005 向后兼容组件和 Microsoft SQL Server 2008 管理对象。
      【解决方案3】:

      不确定这是否已解决,但听起来原始发布者将 dll 的“特定版本”属性设置为“真”。

      要解决此问题,请在 References 文件夹中选择引用并将“特定版本”属性设置为 true。

      Microsoft 确实将一些功能移至 Microsoft.SMO.Extended,但这是一个单独的问题

      【讨论】:

      • 即使我将属性“特定版本”更改为 false,它也不起作用。这是因为在我的情况下,我试图在具有 v10 dll 的机器上运行参考 v9 dll 构建的应用程序。
      • 啊,我明白了。我们刚刚也遇到了这个问题。作为一种解决方法,我们将 ..\Microsoft SQL Server\90\SDK\Assemblies 目录中的大部分 DLL 直接复制到项目的 bin 目录中。该应用程序将在 bin 目录中查找引用(而不是 GAC,因为它不会存在于目标计算机的 GAC 中)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2011-06-17
      • 2011-09-07
      相关资源
      最近更新 更多