我想在 Azure SQL 数据库 V12 上试用包含的数据库用户功能,但是我遇到了一个对我来说似乎很奇怪的身份验证问题。
我创建了一个名为Classifier. 我将我的 IP 添加到防火墙规则中,以便我可以从工作站上的 SSMS 连接到 Azure db 服务器。一旦我能够通过 SSMS 连接以进行管理,我尝试向数据库添加一个带有密码的用户,如下所示:
CREATE USER classifier WITH PASSWORD='thepassword'
Run Code Online (Sandbox Code Playgroud)
我还将此用户添加到数据写入者和读取者角色中:
exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'
Run Code Online (Sandbox Code Playgroud)
在此之后,我可以使用来自 SSMS 的这些凭据连接到数据库:

但这就是事情出错的地方:我尝试了几种不同的连接字符串咒语,但似乎无法在我正在开发的网络应用程序中建立连接。它在 Azure 环境中不起作用,所以我在 localhost 上运行,并带有到 Azure 数据库的连接字符串,但它无法连接。这是我目前使用的连接字符串:
<add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)
我尝试为用户重置密码(通过 SSMS),然后更新连接字符串;我还通过将密码从该连接字符串中复制到 SSMS 中的连接对话框中来仔细检查密码,以确保那里没有某种类型的拼写错误。
我在 Azure db 服务器中启用了审计,希望得到一些关于它失败原因的详细信息,但我得到的只是:

这就是我被困的地方。我通过文档或博客找到的大部分内容表明要做的是查看 SQL Server 日志以查看真正的错误状态是什么,这将更狭隘地表明失败的性质,但是由于我正在处理 Azure 没有办法做到这一点(据我所知)。
什么会导致应用程序在 SSMS(以及 LinqPad 和 Visual Studio Server Explorer,顺便说一句)成功的情况下失败?