繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM