SMO和Sql Server 7.0

时间:2020-03-05 18:44:42  来源:igfitidea点击:

是否有人对Sql Server管理对象是否与Sql Server 7.0兼容有明确的答案?
文档状态:

Because SMO is compatible with SQL Server version 7.0, SQL Server 2000, SQL Server 2005, and SQL Server 2008, you easily manage a multi-version environment.

但是尝试连接到Sql 7实例会使我:

"This SQL Server version (7.0) is not supported."

有没有人成功地让这两个人打得更好?

解决方案

回答

我们可以使用SMO连接到SQL Server版本7、2000和2005,但是SMO不支持将兼容性级别设置为60、65和70的数据库。

对于SQL Server 7.0,兼容性级别为70

显然,这是相互矛盾的信息...我认为,如果数据库兼容性级别为70,则无法连接。

要检查运行,请执行以下操作:EXEC sp_dbcmptlevel'databasename'

通过此链接,我们似乎可以通过运行以下命令来更改兼容性级别:

EXEC sp_dbcmptlevel'数据库名称',80

显然在进行任何更改之前先进行备份。

回答

看来文档是错误的(并且在过去3年多的时间里一直是错误的!)。我在Microsoft.SqlServer.Management.Common.ConnectionManager,Microsoft.SqlServer.ConnectionInfo中找到了带有Reflector的代码段

protected void CheckServerVersion(ServerVersion version) {
    if ((version.Major <= 7 || (version.Major > 9)) {
       throw new ConnectionFailureException(
          StringConnectionInfo.ConnectToInvalidVersion(version.ToString())
       );
    }
}

因此,看起来仅支持SQL 2000和SQL 2005. 据推测,SQL 2008(版本10)已更新了SMO程序集。

Bummer猜想该项目将返回到SQL-DMO。

回答

对不起,我的回答很晚...对SQL 2000和SQL 7的部分支持

回答

只是为了跟进评论,SQL 2008确实有其自己的SMO软件包,该软件包支持SQL 2000、2005和2008,实际上已明确记录在其下载页面上!没错,我们无法将SQL 2005 SMO连接到SQL 2008.

SMO版本10中有一些不错的更新更新,如果我们访问所连接的SQL版本上不存在的属性,则会出现一个明智的"此属性在此SQL版本上不可用"的异常或者这样的话。

Microsoft SQL Server 2008管理对象
SQL Server管理对象(SMO)是一个.NET Framework对象模型,使软件开发人员可以创建客户端应用程序来管理SQL Server对象和服务。该对象模型将与SQL Server 2000,SQL Server 2005和SQL Server 2008一起使用。