SMO和Sql Server 7.0
是否有人对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一起使用。