0

I have created a UWP application to try and connect to a SQL Server database hosted on another computer. I'm trying to connect to this server using the code below. However I'm getting what I'm understanding to be a "time out" error when trying to open the connection to the server. I can connect to the server perfectly using an identical connection string on a seperate WPF app.

Some other details about my app:
Minimum and maximum version is set to "Windows 10 Fall Creators Update"
App is minimum with only a button and label.
More details can be provided if needed.

Edit: My question is "Any ideas for why this works fine in WPF but not in UWP using the 'Windows 10 Fall Creators Update' which apparently fully supports SQL server connectivity?"

My UWP app:

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();
                }
            }
        }
    }

Error msg:

    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
Tallme2
  • 43
  • 7

3 Answers3

1

You will need to declare one or both of these capabilities (depending on your networking setup):

  • enterpriseAuthentication

  • privateNetworkClientServer

Stefan Wick MSFT
  • 13,600
  • 1
  • 32
  • 51
1

After you enabled capabilities enterprise Authentication and privateNetworkClientServer and if not worked, use CheckNetIsolation.exe to verify app that enables the appropriate capabilities .

My workaround I changed the connection string to work TCP/IP , and now works fine!

Marks
  • 41
  • 5
1

Don't forget under Computer Management you may need to enable the TCP/IP Services and restart your SQL Server in order for the services to start working for outside connections to connect remotely to your database.