题
有没有人能给出明确的答案 SQL Server 管理对象 与Sql Server 7.0兼容吗?文档指出:
由于 SMO 与 SQL Server 7.0、SQL Server 2000、SQL Server 2005 和 SQL Server 2008 兼容,因此您可以轻松管理多版本环境。
但尝试连接到 Sql 7 实例会让我:
“不支持此 SQL Server 版本 (7.0)。”
有没有人成功地让这两个人打得很好?
解决方案
您可以使用 SMO 连接到 SQL Server 版本 7、2000 和 2005,但 SMO 不支持设置为兼容性级别 60、65 和 70 的数据库。
对于 SQL Server 7.0,兼容性级别为 70
显然这是相互冲突的信息...我假设如果您的数据库的兼容性级别是 70,您将无法连接。
要检查运行:执行 sp_dbcmptlevel '数据库名称'
通过这个链接查看, ,看来您可以通过运行以下命令来更改兼容性级别:
执行 sp_dbcmptlevel '数据库名称', 80
显然在更改任何内容之前先进行备份。
其他提示
看起来文档是错误的(并且在过去 3 年多的时间里一直是错误的!)。我发现这个片段 反射器 在 Microsoft.SqlServer.Management.Common.ConnectionManager, Microsoft.SqlServer.ConnectionInfo
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 程序集。
真糟糕 - 猜猜它又回来了 SQL-DMO 对于这个项目。
只是为了跟进您的评论,SQL 2008 确实有自己的 SMO 包,支持 SQL 2000、2005 和 2008,这实际上在其下载页面上有明确记录!你是对的,你无法将 SQL 2005 SMO 连接到 SQL 2008。
SMO 版本 10 中有一些不错的更新,如果您访问所连接的 SQL 版本上不存在的属性,您会收到一个明显的“此属性在此版本的 SQL 上不可用”异常,或者大意如此的话。
Microsoft SQL Server 2008 Managements SQL Server Management对象(SMO)是一个.NET框架对象模型,它使软件开发人员能够创建客户端应用程序来管理和管理SQL Server对象和服务。该对象模型适用于 SQL Server 2000、SQL Server 2005 和 SQL Server 2008。
抱歉回复晚了...有 部分支持 对于 SQL 2000 和 SQL 7