使用 UWP 连接到 SQL 服务器时出现问题



我创建了一个UWP应用程序来尝试连接到另一台计算机上托管的SQL Server数据库。我正在尝试使用以下代码连接到此服务器。但是,在尝试打开与服务器的连接时,我得到了我所理解的"超时"错误。我可以在单独的 WPF 应用上使用相同的连接字符串完美地连接到服务器。

关于我的应用程序的其他一些详细信息:
最低和最高版本设置为"Windows 10 秋季创意者更新">
应用程序是最小的,只有一个按钮和标签。
如果需要,可以提供更多详细信息。

编辑:我的问题是"为什么这在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=DIMENSIONVRSERVDIMENSIONVRDB;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:UsersDVR-Laptop-02sourcereposApp2App2MainPage.xaml.cs:line 50
Inner Exception 1:
SocketException: The operation completed successfully

您需要声明以下一项或两项功能(取决于您的网络设置(:

  • 企业身份验证

  • 私有网络客户端服务器

启用功能后,企业身份验证和私有网络客户端服务器,如果未工作,请使用 CheckNetIsolation.exe 验证启用相应功能的应用程序。

我的解决方法是我更改了连接字符串以工作TCP/IP,现在工作正常!

不要忘记在"计算机管理"下,您可能需要启用 TCP/IP 服务并重新启动 SQL Server,以便服务开始为外部连接远程连接到数据库工作。

最新更新