Ben*_*ins 19 authentication azure-sql-database connections
我想在 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,顺便说一句)成功的情况下失败?
小智 18
我们发现对于包含的数据库/包含的用户,您必须指定:
GRANT CONNECT TO [YOUR_USER]
Run Code Online (Sandbox Code Playgroud)
否则CONNECT似乎默认被撤销。一旦我们进行了上述更改,我们就可以访问数据库了。
小智 7
当切换 API 以通过新包含的用户连接到 Azure 数据库时,我们必须更改连接字符串以包含:
Persist Security Info=True;
Run Code Online (Sandbox Code Playgroud)
虽然我不明白为什么需要进行此更改,但我想在这里发布以防将来对其他人有所帮助。
我们最初是从这个问题来尝试这个的。
| 归档时间: |
|
| 查看次数: |
36851 次 |
| 最近记录: |