我创建了一个UWP应用程序,尝试连接到另一台计算机上托管的SQL Server数据库。我正在尝试使用下面的代码连接到此服务器。但是,当我尝试打开与服务器的连接时,我正在理解为“超时”错误。我可以在单独的WPF应用程序上使用相同的连接字符串完美地连接到服务器。
有关我的应用的其他一些细节:
最小和最大版本设置为“Windows 10 Fall Creators Update”
应用程序是最小的,只有一个按钮和标签
如果需要,可以提供更多细节。
编辑:我的问题是“为什么这在WPF中工作得很好但在UWP中没有使用'Windows 10 Fall Creators Update'显然完全支持SQL服务器连接?”
我的UWP应用程序:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Data.SqlClient;
namespace App2
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
{
string connetionString = null;
SqlConnection cnn;
connetionString = @"Data Source=DIMENSIONVRSERV\DIMENSIONVRDB;Database=mydatabase;Persist Security Info=True;User ID=DVRLaptop;Password=password";
cnn = new SqlConnection(connetionString);
cnn.Open();
Lbl_ConState.Text = "Connection Open ! ";
cnn.Close();
}
}
}
}
错误消息:
System.Data.SqlClient.SqlException
HResult=0x80131904
Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid)
Source=Core .Net SqlClient Data Provider
StackTrace:
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at App2.MainPage.Button_Click(Object sender, RoutedEventArgs e) in C:\Users\DVR-Laptop-02\source\repos\App2\App2\MainPage.xaml.cs:line 50
Inner Exception 1:
SocketException: The operation completed successfully
答案 0 :(得分:1)
启用企业身份验证和privateNetworkClientServer功能后,如果不起作用,请使用C heckNetIsolation.exe验证启用相应功能的应用。
My workaround我将连接字符串更改为工作TCP / IP,现在工作正常!
答案 1 :(得分:0)
您需要声明其中一项或两项功能(取决于您的网络设置):
enterpriseAuthentication
privateNetworkClientServer
答案 2 :(得分:0)
不要忘记在计算机管理下,您可能需要启用TCP / IP服务并重新启动SQL Server,以便服务开始为外部连接工作以远程连接到您的数据库。