You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用ServerConnection.Databases.Contains()报错:无法检索请求数据

SMO升级后连接SQL Server 2022报错问题记录

记录此问题,因为未找到相同成因的相关错误参考。

场景

  • 调用SQL Management Objects(SMO)库枚举已安装的SQL Server数据库实例
  • 环境已安装SQL Server 2022
  • 原应用使用SQL Server 2016 SMO,已升级引用并配置绑定重定向

报错代码

SqlConnection connection = new SqlConnection(connBuilder.ConnectionString);
ServerConnection sc = new ServerConnection(connection);
Server server = new Server(sc);
// 此处触发报错
if (server.Databases.Contains(databaseName))

报错信息

Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException: 无法检索此请求的数据。
--- 内部异常堆栈跟踪开始 ---
---> Microsoft.SqlServer.Management.Sdk.Sfc.InternalEnumeratorException: Microsoft.SqlServer.Management.Smo.SqlServer 未派生自 EnumObject。
   在 Microsoft.SqlServer.Management.Sdk.Sfc.ObjectCache.LoadElement(ObjectLoadInfo oli)
   在 Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetServerVersion(Urn urn, Object ci)
   在 Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetObjectsFromCache(Urn urn, Object ci)
   在 Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
   在 Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
   在 Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
--- 内部异常堆栈跟踪结束 ---
   在 Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
   在 Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorData(Request req)
   在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetCollationRelatedProperties(String dbName, ContainmentType& containmentType, CatalogCollationType& catalogCollation)
   在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(Boolean inServer)
   在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer()
   在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.get_StringComparer()
   在 Microsoft.SqlServer.Management.Smo.AbstractCollectionBase.get_StringComparer()
   在 Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.InitInnerCollection()
   在 Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetObjectByKey(ObjectKeyBase key)
   在 Microsoft.SqlServer.Management.Smo.SimpleObjectCollectionBase.Contains(String name)
   在 Application.clsDatabaseManagement.GetDbStatus(String connectionString) 位置 C:\Application\DatabaseManagement\DatabaseManagement.cs:行号 1404

内容的提问来源于stack exchange,提问作者DiskJunky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:35:11