【发布时间】:2021-04-22 23:37:01
【问题描述】:
我构建了一个小型通用 Windows 应用程序 (C#),但无法连接到我的 SQL 服务器。异常内容如下:
发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:TCP 提供程序,错误:40 - 无法打开与 SQL Server 的连接
一小段代码很简单:
try
{
using (SqlConnection conn = new SqlConnection(GetConnectionString()))
{
await conn.OpenAsync();
if (conn.State == System.Data.ConnectionState.Open)
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = getAllRunSheetsQuery;
using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
var runNumber = reader.GetInt32(0);
}
}
}
}
}
}
catch (Exception eSql)
{
System.Diagnostics.Debug.WriteLine($"Exception: {eSql.Message} {eSql.InnerException?.Message}");
throw;
}
连接字符串是:
保持安全信息=假;应用程序 名称=XBAR_Digital_Form;连接 超时=2;服务器=wcsql.wc.com;数据库=ppd_general_use;用户 ID=*******;密码=********;
我还尝试了各种其他连接字符串选项来连接到 SQL Server 2012 版。
连接超时后在“await conn.OpenAsync()”处引发异常。我已经通过调试确认 GetConnectionString() 方法正确地传递了字符串。
奇怪的是,我可以与使用完全相同的连接字符串制作的标准 Windows 窗体应用程序很好地连接。我使用相同的通用方法在两个应用程序上使用 System.Data.Sqlclient 进行连接。我可以从任何其他应用程序(如 Excel 或 Microsoft SQL Server Management Studio)连接到服务器
【问题讨论】:
-
能否包含连接字符串值?如果适用,请输入密码和部分/全部用户名。
标签: c# sql-server