无法从Azure内部连接到Azure SQL

3

我刚刚在Azure上部署了一个Node.js网络应用程序,似乎无法连接到同一区域的Azure SQL Server。

我检查了以下内容:

  • SQL服务器防火墙:我启用了对Azure服务(以及为了安全起见,Web应用程序IP)的访问权限
  • Web日志:没有什么异常,服务器正常工作,但是任何涉及查询的操作都会超时而不报错
  • 本地部署:在本地运行应用程序(node app.js)可以直接使用

该应用程序使用Sails.js和sails-mssql适配器。

编辑:我还尝试了一个连接到数据库的虚拟应用程序,并在成功检索到行(Table.findOne().then())后返回一个响应。第一次,它可以正常工作(尽管延迟30秒)。之后,加载页面时就只是一个超时错误或502错误。

编辑2:看起来sails-sqlserver有问题,它捆绑了一个已知与Azure SQL v12不兼容的mssql版本(请参见这里)。我通过npm-shrinkwrap强制更新到mssql 2.3.1,但仍无法正常工作。

我还能检查什么问题吗?我已经没有更多的想法了。


你收到了哪个错误? - Joseph Idziorek
1
重要的是要注意Azure SQL数据库(ASQL)和Azure SQL服务器(在虚拟机上)之间的区别。我首先要检查的是您的ASQL的诊断页面(如果它是ASQL)。 - b0rg
@JosephIdziorek 没有错误,只是在检索涉及数据库访问的页面时超时。日志中没有错误。 - amyspark
2个回答

2
你尝试通过SQL Management Studio连接了吗?只是为了排除任何奇怪的连接问题。你能创建表等吗? 如果你没有管理工具,你可以通过Visual Studio连接。 这是一个虚拟机还是SQL数据库?虚拟机...你打开了端口吗?SQL数据库...你能通过管理门户创建表吗? 我从未使用过Sails,但这里有一个使用msnodesql的例子,看看它是否连接。可能只是Sails的问题。

https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-nodejs-simple-windows/


这是一个 SQL 数据库(没有涉及虚拟机)。该应用程序在 Web 应用程序容器中运行。关于 SQL Management Studio,我可以使用 VS2015 成功连接到数据库,并且当应用程序在本地运行时也可以连接成功。 - amyspark

1
通常情况下,502错误可能是由于node.js进程崩溃,前端请求未被处理而返回502。您可以在本地运行应用程序并监视sails进程的日志以检查进程崩溃的原因。此外,如果仅在Azure上出现此问题,您可以利用Kudu控制台上的logstream工具来监视站点的日志。该工具的URL应类似于:https://<your_site_name>.scm.azurewebsites.net/api/logstream

刚刚尝试了你的建议。本地 sails run 没有崩溃,它只是正常工作(商标)。Azure 运行超时,并且 logstream 没有显示任何内容。对测试端点的请求根本没有出现。 - amyspark
如果您无法打开日志流页面,也可以下载日志文件。登录站点的 Kudu 控制台,在顶部导航栏的工具部分下单击“诊断转储”按钮。或者访问 https://<your_site_name>.scm.azurewebsites.net/api/dump - Gary Liu
请参见上面的编辑,关于sails-sqlserver使用过时的库。 - amyspark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接