- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试连接到我使用 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,如下所示:-
我创建了一个 .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();
}
}
}
输出:-
我尝试使用您在评论中提到的连接字符串格式运行代码:-
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
我能够运行上面相同的代码并获得所需的输出:-
当我尝试更改连接字符串中的 Azure SQL 服务器名称时,我得到了与您相同的错误代码,请参阅以下内容:-
验证您的连接字符串是否缺少任何语法,并从 Azure 门户进行验证。
关于C# 代码无法连接到 Azure SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75229491/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!