[英]C# code is unable to connect to Azure SQL database
我正在尝试使用 C# (.NET Core 3.1) 连接到我在 Azure 中创建的示例数据库 我已经在 Azure 的防火墙规则中启用了我的 IP 地址。 我可以使用 VS2019 的 SQL 服务器 Object Explorer 连接并查看其中的数据库,没有任何问题。
但是,当我在同一台 PC 上运行一个简单的 C# 应用程序来执行查询以计算表中的记录数时,它会在连接打开时抛出以下异常 (conn.Open());
A. 与 SQL 服务器建立连接时发生网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称是否正确以及 SQL 服务器是否配置为允许远程连接。 (提供商:TCP 提供商,错误:0 - 请求的地址在其上下文中无效。)
C#代码;
using System;
using System.Data.SqlClient;
namespace AzureSql2
{
class Program
{
static void Main(string[] args)
{
string connStr = " Server=tcp:beaconsqlsql.database.windows.net,1433;Initial Catalog=MRP2;Persist Security Info=False;User ID=beaconadmin;Password=********;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
Console.WriteLine("Building connection");
try
{
using (var conn = new SqlConnection(connStr))
{
Console.WriteLine("Creating command");
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT COUNT(*) FROM [dbo].[Table]";
Console.WriteLine("Opening connection");
conn.Open();
Console.WriteLine("Reading database");
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("Record count: {0}", reader.GetInt32(0));
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
}
Console.WriteLine("Press Enter to exit");
Console.ReadLine();
}
}
}
我试过暂时关闭我 PC 上的防火墙,但这没有任何区别。 SQL 服务器 Object Explorer 可以连接,但 C# 代码无法连接,这听起来像是 C# 代码有问题,但我看不出它与我看过的示例之间有任何区别。
我创建了一个 Azure SQL 数据库并允许我的客户 IP 如下所示:-
我创建了一个 .Net 控制台应用程序并运行了你的代码,我替换了
using System.Data.SqlClient
和
using Microsoft.Data.SqlClient
您可以使用上述任何软件包。
从 Azure 门户复制连接字符串 > Azure SQL 服务器 > 连接字符串参考如下:-
C# 代码:-
using System;
using System.Linq.Expressions;
using Microsoft.Data.SqlClient;
namespace AzureSql2
{
class Program
{
static void Main(string[] args)
{
string connStr = "Server=tcp:sqlservername.database.windows.net,1433;Initial Catalog=sqldbname;Persist Security Info=False;User ID=username;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
Console.WriteLine("Building connection");
try
{
using (var conn = new SqlConnection(connStr))
{
Console.WriteLine("Creating command");
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT * FROM Products";
Console.WriteLine("Opening connection");
conn.Open();
Console.WriteLine("Reading database");
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("Record count: {0}", reader.GetInt32(0));
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Exception: " + ex.Message);
}
Console.WriteLine("Press Enter to exit");
Console.ReadLine();
}
}
}
Output:-
我尝试使用您在评论中提到的连接字符串格式运行代码:-
Data Source=azuresqlservername.database.windows.net;Initial Catalog=databasename;User ID=siliconuser;Password=password;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
我能够运行上面相同的代码并获得所需的 output:-
当我尝试更改连接字符串中的 Azure SQL 服务器名称时,我得到了与您相同的错误代码,请参考以下内容:-
验证您的连接字符串是否缺少任何语法,并从 Azure 门户网站对其进行验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.