【发布时间】:2020-06-30 16:15:01
【问题描述】:
团队, 这真让我抓狂。我在启动 UWP 应用程序时总是收到此错误:
Microsoft.Data.SqlClient.SqlException: '建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:共享内存提供者,错误:40 - 无法打开与 SQL Server 的连接)'
内部异常:
Microsoft.Data.SqlClient.SqlException H结果=0x80131904 消息=建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:共享内存提供程序,错误:40 - 无法打开与 SQL Server 的连接) Source=Core Microsoft SqlClient 数据提供程序 堆栈跟踪: 在 Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识,SqlConnectionString connectionOptions,SqlCredential 凭据,对象 providerInfo,字符串 newPassword,SecureString newSecurePassword,布尔重定向用户实例,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData,布尔 applyTransientFaultHandling,字符串 accessToken,DbConnectionPool 池,SqlAuthenticationProviderManager sqlAuthProviderManager ) 在 Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,DbConnectionPoolKey poolKey,对象 poolGroupProviderInfo,DbConnectionPool 池,DbConnection owningConnection,DbConnectionOptions userOptions) 在 Microsoft.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool 池,DbConnection owningObject,DbConnectionOptions 选项,DbConnectionPoolKey poolKey,DbConnectionOptions 用户选项) 在 Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) 在 Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) 在 Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,布尔allowCreate,布尔onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal& 连接) 在 Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 重试,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal& 连接) 在 Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionSource1 retry, DbConnectionOptions userOptions) at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 重试,DbConnectionOptions userOptions) 在 Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 retry) at Microsoft.Data.SqlClient.SqlConnection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.InitializeReader(DbContext _,布尔结果) 在 Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState 状态,Func3 operation, Func3 verifySucceeded) 在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.MoveNext() at System.Collections.Generic.List1.AddEnumerable(IEnumerable1 enumerable) at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 源) 在 UWP_EF_i9.MainPage.Page_Loaded(Object sender, RoutedEventArgs e) 在 E:\Users\Massimo\OneDrive\Development\Source\UWP EF i9\UWP EF i9\MainPage.xaml.cs:line 35
内部异常 1: Win32Exception: 访问被拒绝
由于 UWP 中的 EFCore 无法对数据库进行 dbscaffold,因此按照此处找到的建议,我做了一个 EF.Core WPF 应用程序,搭建了创建类的数据库...在 UWP 应用程序中导入了生成的类(重命名了命名空间在适用的情况下)。
在 UWP 应用程序中,我添加了 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.SQLServer 并添加了 Enterprise Capability: Enterprise Authentication
所以一切都应该没问题......但是......它不起作用。在 WPF 中正常工作的完全相同的 LINQ 查询给了我 UWP 中的错误
有什么想法吗?我错过了什么?
--- 编辑 1
我什至从这个页面添加了代码:
Use a SQL Server database in a UWP app connectionString = "Data Source=YourServerName\SQLEXPRESS;Initial Catalog=NORTHWIND;Integrated Security=SSPI";
我的情况是这样:
try
{
using (SqlConnection conn = new SqlConnection((App.Current as App).ConnectionString))
{
conn.Open();
if (conn.State == System.Data.ConnectionState.Open)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * from tAPP";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
}
}
}
}
}
}
但是 conn.Open() 失败并显示相同的消息
【问题讨论】:
标签: sql-server uwp entity-framework-core database-connection ef-core-3.0