我正在尝试使用自己的数据库在this demo中创建应用程序。我现在想要做的就是显示一个数据表。我正在使用Visual Studio 2017专业版,并且正在连接到较旧的SQL Server版本10.50.1600。我能够通过SSMS通过Windows身份验证连接到数据库,但是当我尝试与应用程序连接时,出现以下错误消息。
已成功与服务器建立连接,但随后 登录过程中发生错误。 (提供者:TCP Provider, 错误:0-操作成功完成)
我花了数小时在互联网上寻找解决此错误的方法。出现此错误的原因似乎有很多,但是我还没有找到适合我的解决方案。
我想知道人们是否可以给我一些提示,让我了解在哪里可以看到这种情况的发生。我在“汽车”列表中看不到任何有用的信息,但是如果有其他东西跳出来,我会附上它。
我的连接字符串和类如下。正如我提到的,它确实可以连接,但是随后在登录时抱怨一些问题:
错误消息的屏幕截图
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;
}
}
答案 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中间层在客户端代理事物。