繁体   English   中英

无法在Linux上使用SQLConnection与Azure SQL连接

[英]Can't connect with Azure SQL using SQLConnection on Linux

我目前正在开发使用Azure SQL Db进行数据持久化的ASP.NET Core WebApi。 我使用Linux Mint 19作为开发环境。 不幸的是,当调用dbConnection.Open()时,我一直在获取SQLException:

Exception has occurred: CLR/System.Data.SqlClient.SqlException
An exception of type 'System.Data.SqlClient.SqlException' occurred in 
System.Data.SqlClient.dll but was not handled in user code: 'A 
network-related or instance-specific error occurred while establishing 
a connection to SQL Server. The server was not found or was not 
accessible. Verify that the instance name is correct and that SQL 
Server is configured to allow remote connections. (provider: TCP 
Provider, error: 40 - Could not open a connection to SQL Server)'

这是我的代码:

 private const string connectionString = "Server=tcp:{myserver}.database.windows.net,1433;Initial Catalog={mydb};Persist Security Info=False;User ID={user};Password={pass};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";

 SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
        builder.DataSource = "my_server.database.windows.net";
        builder.UserID = "my_user";
        builder.Password = "my_pass";
        builder.InitialCatalog = "my_db";

        using(IDbConnection dbConnection = new SqlConnection(builder.ConnectionString)){
            dbConnection.Open();
            var result = dbConnection.Query<Task>("SELECT * FROM Tasks");

            if (dbConnection.State == ConnectionState.Open)
            {
            dbConnection.Close();

            }
        }

我已经尝试过使用SQLConnectionStringBuilder和使用我的凭据传递connectionString。 没有一个起作用。

我使用以下命令打开了端口1433:

sudo ufw allow 1433

但这并没有帮助,仍然出现相同的异常。

任何帮助将非常感激。

谢谢。

UPDATE

我设法连接到Azure SQL。 看来我的ISP阻止了连接。 我可以使用智能手机WiFi热点进行连接。

首先,请确保已创建适当的防火墙规则,以允许来自网络的流量到达Azure SQL数据库。 在此处了解如何操作。

请尝试ping您的SQL Azure服务器。 ping应失败,但应返回Azure SQL数据库逻辑服务器的当前IP地址。 如果看不到返回的IP,则问题是DNS问题。

在上一步返回IP地址后,尝试通过端口1433远程登录该IP地址。

telnet 181.37.11.112 1433

如果无法使用telnet连接,请使用traceroute命令诊断何时定位发生数据丢失的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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