如何调试'用户登录失败'在Azure SQL数据库上?

时间:2018-05-26 03:30:02

标签: azure azure-sql-database

这里出现了错误消息:

enter image description here

My Web App似乎有正确的连接字符串。当我单击Show Connection String:

时,这正是Azure提供给我的
Server=tcp:myservertest.database.windows.net,1433;Initial Catalog=MyDatabaseTest;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

这是我在Visual Studio发布设置默认连接设置中输入的连接字符串:

Server=tcp:myservertest.database.windows.net,1433;Initial Catalog=MyDatabaseTest;Persist Security Info=False;User ID=*****;Password=***********;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

enter image description here

我已确认用户名和密码是正确的...我使用相同的用户名和密码通过Microsoft SQL Server Management Studio进行连接。

我尝试按如下方式设置诊断设置,但我不确定在哪里可以找到生成的日志。我不会在Kudo服务中看到它们,但我相信它们可以在其他地方访问。

有谁知道他们存放在哪里?

此外,还有哪些其他方法可以调试此登录失败的用户错误消息?

enter image description here

4 个答案:

答案 0 :(得分:5)

错误看起来像您可以连接到服务器但服务器拒绝登录。在服务器日志中进行调试会有所帮助,因此您正在查找正确的位置。

您可以启用Azure SQL数据库审计&治疗检测。您可以通过打开SQL Server资源并选择Security / Auditing& amp;来在SQL Server实例级别启用它。治疗检测。选择存储帐户以将日志存储在存储详细信息中(参见下图)。有关更多信息,请参阅https://docs.microsoft.com/en-us/azure/sql-database/sql-database-auditingAuditing & Treat Detection settings

启用审核后尝试登录您的数据库。之后,您可以在名为 sqldbauditlogs 的Blob容器中的指定Azure存储帐户中找到日志。日志位于文件夹/ servername / databasename / SqlDbAuditing_ServerAudit_NoRetention / yyyy-mm-dd /中,带有xel扩展名的文件。您可以在SSMS(文件/打开/文件...)中下载并打开.xel文件。 xel文件包含事件,您可以在那里看到登录尝试。

事件字段成功告知登录是否失败,字段 server_principal_name 包含两种情况下的用户名。 从字段 additional_information 中的文本中,您可以找到error_code(在xml中)。防火墙阻止了错误代码40615,代码18456的用户名或密码错误。 (来自https://docs.microsoft.com/en-us/azure/sql-database/sql-database-develop-error-messages的错误代码)

您还可以在数据库系统表中找到一些用于分析连接的信息,例如: sys.event_log(参见:https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-event-log-azure-sql-database?view=azuresqldb-current)。

有关解决Azure SQL数据库连接问题的详细信息,请访问:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-troubleshoot-common-connection-issues

我希望这有助于您调试连接。

答案 1 :(得分:1)

您已确认Allow access to Azure services已开启。这通常是我们被绊倒的地方。如果是来自外面的地方,我们想在这里查看IP列表。知道不是它,让我们深入挖掘。

你已经进入Kudu控制台验证所有的事情。从该控制台,安装mssql-cli。从Kudu控制台运行pip install mssql-cli。如果这不起作用,请查找direct urls卷曲或下载到您的PC并使用Kudu Console将文件上传到您的应用服务中。

安装mssql-cli后,尝试使用appSettings.json中设置的凭据进行连接。 (有关命令行选项,请参阅https://github.com/dbcli/mssql-cli/blob/master/doc/usage_guide.md#options。)最有可能的是,它会发出一条错误消息,说明无法连接的原因,为您提供更多线索。

如果mssql-cli成功连接,则会覆盖您应用的设置。您是否在Azure门户的“应用程序设置”选项卡中设置了连接字符串?暂时,您可能会更改应用程序以将连接字符串的某些部分写入模糊页面。一旦收到信息,请删除页面,然后change the password

要尝试的另一件事:从异常中获取所有细节 - 包括Data和递归内部异常。它可能有一条线索埋在那里。您可以在Azure上remotely debug使用该应用。在进行调试之前,您需要确保已打开远程调试并从App Service中的App Settings刀片中选择正确版本的Visual Studio。

答案 2 :(得分:0)

  

继续发表评论 - Kudu会在哪里找到? Justin在常规文件资源管理器中?

转到Debug console > CMD - site > wwwroot - 点击Edit icon

enter image description here

同时确保Allow access to Azure servicesON

enter image description here

答案 3 :(得分:0)

有时需要在 azure 中检查 azure 应用程序上的连接字符串。也许连接字符串与您的 web.config 中的不同 enter image description here