将UWP与远程SQL Server连接时出错

时间:2017-10-27 18:12:18

标签: c# sql-server visual-studio uwp visual-studio-2017

我想将UWP连接到SQL Server数据库。我使用下面的代码来做到这一点。

private LogIn GetDetails(string UserName)
{
    SqlConnectionStringBuilder connectionString = new SqlConnectionStringBuilder();
    connectionString.DataSource = "IP,Port";
    connectionString.InitialCatalog = "Database Name";
    connectionString.UserID = "sa";
    connectionString.Password = "Password";
    var logIn = new LogIn();
    try
    {
        using (SqlConnection conn = new SqlConnection(connectionString.ConnectionString))
        {
            conn.Open();
            if (conn.State == System.Data.ConnectionState.Open)
            {
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = $"SELECT * FROM Login where UserName = '{UserName}'";
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            logIn.UserName = reader.GetString(0);
                            logIn.Password = reader.GetString(1);
                            logIn.Type = reader.GetString(2);
                        }
                    }
                }
            }
        }
        return logIn;
    }
    catch (Exception)
    {
        return null;
    }
}

此代码抛出异常

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及SQL Server是否配置为允许远程连接

所以我尝试在Visual Studio的Server Explorer中打开SQL Server数据库。它连接打开正常,但如果我打开Tables文件夹它显示

enter image description here

所以我尝试在SQL Server Management Studio中打开SQL Server数据库。在那,它正常工作。连接打开正常,我也可以查看Tables文件夹中的表。

enter image description here

对错误的地方一无所知。可能在Visual Studio的Code或Server Explorer中或服务器计算机的SQL Server配置中。

已尝试解决方案

  • 创建新的SQL Server登录帐户并通过新的登录 新帐户
  • 使用以下命令启用混合模式

    ALTER LOGIN [sa] WITH PASSWORD='newpassword', CHECK_POLICY=OFF
    GO
    ALTER LOGIN [sa] ENABLE
    GO
    

3 个答案:

答案 0 :(得分:2)

您需要确保在appx清单中声明所需的网络功能。根据您的网络设置/配置,这些是要检查的:

<Capability Name="internetClient" />
<Capability Name="internetClientServer" />
<Capability Name="privateNetworkClientServer" />
<uap:Capability Name="enterpriseAuthentication" />

答案 1 :(得分:0)

您需要启用混合模式和&#39; sa&#39;用户登录。

ALTER LOGIN [sa] WITH PASSWORD='newpassword', CHECK_POLICY=OFF
GO
ALTER LOGIN [sa] ENABLE
GO

取自here

答案 2 :(得分:0)

Package.appxmanifest

中设置以下功能
  • 互联网(客户端和服务器)
  • 专用网络(客户端和服务器)