c# - 获取 .NET Core 中的 SQL Server 列表
问题描述
我正在尝试使用 .NET Core 3.1 获取所有 SQL Server 数据源的列表。我已按照此处的说明进行操作,但CanCreateDataSourceEnumerator
始终返回 false。我尝试了两种不同的方法来获取列表,但它们都在 if 语句中失败。
using (SqlConnection con = new SqlConnection())
{
PropertyInfo dbProviderFactoryProperty = con.GetType().GetProperty("DbProviderFactory", BindingFlags.NonPublic | BindingFlags.Instance);
var factory = dbProviderFactoryProperty.GetValue(con) as DbProviderFactory;
if (factory.CanCreateDataSourceEnumerator)
{
var instance = factory.CreateDataSourceEnumerator();
await Task.Run(() => table = instance.GetDataSources());
foreach (DataRow row in table.Rows)
Console.WriteLine("{0}\\{1}", row["ServerName"], row["InstanceName"]);
}
}
//DbProviderFactories.RegisterFactory("Microsoft.Data.SqlClient", SqlClientFactory.Instance);
//var factory = DbProviderFactories.GetFactory("Microsoft.Data.SqlClient");
//if (factory.CanCreateDataSourceEnumerator)
//{
// var instance = factory.CreateDataSourceEnumerator();
// await Task.Run(() => table = instance.GetDataSources());
// foreach (DataRow row in table.Rows)
// Console.WriteLine("{0}\\{1}", row["ServerName"], row["InstanceName"]);
//}
我添加了一个 App.config,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.data>
<DbProviderFactories>
<add name="Microsoft SqlClient Data Provider"
invariant="Microsoft.Data.SqlClient"
description="Microsoft SqlClient Data Provider for SQL Server"
type="Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient" />
</DbProviderFactories>
</system.data>
</configuration>
解决方案
推荐阅读
- angular - 使用 Angular 构建多个应用程序版本
- angular - 如何动态地将对象传递给角度属性
- ios - 在设计 dyld_shared_cache_extract_dylibs 上运行应用程序时出错失败
- python - Pandas Dataframe 通过列表理解减少 Dataframe
- java - 如何在 Adobe AEM 中更改 Runnable 类的权限?
- reactjs - React 将 JSX 添加到 map 每个循环中的变量
- r - 在 R 中的嵌套列表的特定元素中搜索向量
- php - Laravel 通过更改键分组
- c++ - 如何修复 MSVC 中与“for”循环内声明匿名结构相关的编译错误?
- .htaccess - 在 htaccess 中丢弃 RewriteRule