【问题标题】:Compatibility Issues for SQL Server 2005 and SQL Server 2008SQL Server 2005 和 SQL Server 2008 的兼容性问题
【发布时间】:2011-03-25 20:39:27
【问题描述】:

我正在尝试在 SQL Server 机器上执行架构文件。我目前安装了 SQL Server 2005 和 SQL Server 2008。当我尝试执行 .sql 文件(打算在 2008 版本上执行)时,我收到以下错误。

Microsoft.SqlServer.Management.Common.ConnectionFailureException: 
Failed to connect to server . --->    
Microsoft.SqlServer.Management.Common.ConnectionFailureException: This SQL Server
version (10.0) is not supported

除了卸载 2005 版本之外,有没有办法指定 Microsoft.SqlServer.Management.Smo.dll 在执行程序时查看的版本或其他解决方法?

编辑

我正在从 ASP.Net 应用程序运行 .sql 文件并使用 Microsoft.SqlServer.SMO dll

ServerConnection conn = new ServerConnection(new System.Data.SqlClient.SqlConnection(connString),);
Server srv = new Server(conn);

// execute sql file
srv.ConnectionContext.StatementTimeout = 300000;
srv.Databases[conn.DatabaseName].ExecuteNonQuery(schema);

【问题讨论】:

  • 您使用什么工具、实用程序或应用程序来“执行 .sql 文件”? (SQLDMO 向我暗示您正在使用命令窗口,但这似乎不太可能。)

标签: asp.net sql-server-2005 sql-server-2008 smo


【解决方案1】:

根据您收到的错误消息,这听起来很像是您正在以某种方式使用/访问 SQL 2005 实用程序。 “10.0 版”是 SQL 2008(在工程方面,与市场营销相对)。你确定你访问的是正确的 dll 吗?

很久以前,我碰到过类似的东西。我们在一个盒子上安装了 SQL 7.0 和 2000(我说过这是很久以前的事了),我们通过批处理文件、命令窗口之类的东西调用了一些实用程序,我们只能得到旧的/不兼容的要运行的实用程序的版本。几天后,有人 [Hi Greg!] 想查看 DOS 环境的 PATH 设置,你瞧,由于文件夹的列出顺序,操作系统会在新版本之前找到旧版本。像这样的事情现在可能会绊倒你吗?

【讨论】:

  • 同上,用于验证您是否引用了正确的 SQL SMO dll。 2005 和 2008 使用不同的 SMO,彼此不兼容。
  • 我的问题奇怪的是,我的应用程序在只安装了 2008 的笔记本电脑上运行,并且运行良好。但是,当我将它加载到服务器(使用相同的 dll)时,它会中断。我试过重新复制 dll 并没有改变任何东西。
【解决方案2】:

从来没有尝试过从 ASP.NET 进程运行 SMO 的东西,但您可能只需加载文件,在“GO”上拆分,然后将其作为一系列 SQL 命令运行,而无需大惊小怪。这不应该关心 sql 版本问题,除非有一些特定于版本的 SQL 语句。

【讨论】:

  • 我曾想过尝试这个,但它似乎是一种被黑的方法,我担心 cmets 和 IF 语句。
  • IF——就像 IF EXISTS 一样工作得很好。或者至少我已经在很多 SSMS 生成的脚本中使用了它。
  • 感谢您的帮助。我会告诉你进展如何。
  • 这似乎是唯一的解决方案。谢谢你们的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 2020-09-29
相关资源
最近更新 更多