gpt4 book ai didi

C# 代码无法连接到 Azure SQL 数据库

转载 作者:行者123 更新时间:2023-12-02 06:35:30 25 4
gpt4 key购买 nike

我正在尝试连接到我使用 C# (.NET Core 3.1) 在 Azure 中创建的示例数据库我已在 Azure 的防火墙规则中启用了我的 IP 地址。我可以使用 VS2019 的 SQL Server Object Explorer 连接并查看其中的数据库,没有任何问题。

但是,当我在同一台 PC 上运行一个简单的 C# 应用程序来执行查询以计算表中的记录数时,它会在打开连接的位置引发以下异常 (conn.Open()) ;

与 SQL Server 建立连接时发生网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者: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();
}
}
}

我尝试暂时关闭电脑上的防火墙,但这没有什么区别。事实上,SQL Server 对象资源管理器可以连接,但 C# 代码无法连接,这听起来像是 C# 代码有问题,但我看不出它与我查看的示例之间有任何差异。

最佳答案

我创建了一个 Azure SQL 数据库并允许我的客户端 IP,如下所示:-

enter image description here

我创建了一个 .Net 控制台应用程序并运行了您的代码,我替换了

using System.Data.SqlClient

using Microsoft.Data.SqlClient

您可以使用上述任何软件包。

从 Azure 门户 > Azure SQL 服务器复制连接字符串 > 连接字符串引用如下:-

enter image description here

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();
}
}
}

输出:-

enter image description here

我尝试使用您在评论中提到的连接字符串格式运行代码:-

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 

我能够运行上面相同的代码并获得所需的输出:-

enter image description here

当我尝试更改连接字符串中的 Azure SQL 服务器名称时,我得到了与您相同的错误代码,请参阅以下内容:-

enter image description here

验证您的连接字符串是否缺少任何语法,并从 Azure 门户进行验证。

关于C# 代码无法连接到 Azure SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75229491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com