如何解决:与服务器建立了成功连接,但是在登录过程中发生了错误

时间:2018-09-06 17:45:06

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

我正在尝试使用自己的数据库在this demo中创建应用程序。我现在想要做的就是显示一个数据表。我正在使用Visual Studio 2017专业版,并且正在连接到较旧的SQL Server版本10.50.1600。我能够通过SSMS通过Windows身份验证连接到数据库,但是当我尝试与应用程序连接时,出现以下错误消息。

  

已成功与服务器建立连接,但随后   登录过程中发生错误。 (提供者:TCP Provider,   错误:0-操作成功完成)

  • 我启用了以下功能:企业身份验证,Internet(客户端和服务器),Internet(客户端),专用网络(客户端和服务器)
  • 我将服务器更改为另一个最新的数据库服务器,并且该服务器正常工作...所以我认为这可能是我必须更改的数据库服务器上的设置。我不知道该怎么改变。
  • 我正在UWP内部版本16299下运行,并且非常紧密地遵循了演示中的步骤。我已经重新创建了此应用几次,以确保不丢失任何步骤。该应用程序的其余部分工作正常。

我花了数小时在互联网上寻找解决此错误的方法。出现此错误的原因似乎有很多,但是我还没有找到适合我的解决方案。

我想知道人们是否可以给我一些提示,让我了解在哪里可以看到这种情况的发生。我在“汽车”列表中看不到任何有用的信息,但是如果有其他东西跳出来,我会附上它。

我的连接字符串和类如下。正如我提到的,它确实可以连接,但是随后在登录时抱怨一些问题:

错误消息的屏幕截图

enter image description here 连接字符串

public string ConnectionString { get; set; } = "Server=servername; Trusted_Connection=Yes; Integrated Security=True;";

连接类别

public ObservableCollection<MyAssignments> GetMyAssignments(string connectionString)
        {
            string GetMyAssignmentsSQLFile = File.ReadAllText(@".\SQL\MyOpenAssignments.sql");

            var myAssignments = new ObservableCollection<MyAssignments>();
            try
            {
                using (SqlConnection conn = new SqlConnection(connectionString))
                {

                    conn.Open();
                    if (conn.State == System.Data.ConnectionState.Open)
                    {
                        using (SqlCommand cmd = conn.CreateCommand())
                        {
                            cmd.CommandText = GetMyAssignmentsSQLFile;
                            using (SqlDataReader reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    var myAssignment = new MyAssignments();

                                    myAssignment.CallID = reader.GetString(0);
                                    myAssignment.RecvdDate = reader.GetString(1);
                                    myAssignment.CallStatus = reader.GetString(2);
                                    myAssignment.Priority = reader.GetString(3);
                                    myAssignment.Classification = reader.GetString(4);
                                    myAssignment.CallDesc = reader.GetString(5);
                                    myAssignment.CloseDesc = reader.GetString(6);
                                    myAssignments.Add(myAssignment);
                                }
                            }
                        }
                    }
                }
                return myAssignments;
            }
            catch (Exception eSql)
            {
                Debug.WriteLine("SQL-Exception: " + eSql.Message);
            }
            return null;
        }
    }

4 个答案:

答案 0 :(得分:1)

尝试使用 SQL Server身份验证代替 Windows身份验证,这意味着设置 Integrated Security = False ;并在连接字符串中将用户名和密码以及其他参数包括在内。

  

ConnectionString =“ Server = tcp:devsqlserverXXXX.database.windows.net,1433;初始   目录= XXXX;持久安全信息= False;用户ID = USER_ID_XXXX;密码= pa $$ wordXXXX; MultipleActiveResultSets = False;加密= True; TrustServerCertificate = False;连接   超时= 90;“;

答案 1 :(得分:1)

可能是您的用户有权访问数据库服务器,但不能访问数据库吗?

答案 2 :(得分:1)

确保数据库名称正确。我遇到了问题(错误消息相同),而我要解决的所有问题就是修复数据库名称。

我在连接字符串中看不到数据库名称,但是我可能不知道如何正确指定它。为了将来,请检查数据库名称。

答案 3 :(得分:0)

此问题似乎可以在SQL Server 2008 R2 RTM(10.50.1600)和Windows 10 1709中重现。我无法使用SQL Server 2008 R2 SP2重现此问题。我相信这是服务器和客户端中的Microsoft错误。

另请参阅:

最方便的解决方案肯定是将SQL Server更新到SP3(或SP2)。

或者,考虑使用更新的SQL Server通过链接服务器代理连接。或者,使用UWP代理组件或WCF / REST中间层在客户端代理事物。