微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure SQL 包含的用户后端无法使用连接字符串进行连接

如何解决Azure SQL 包含的用户后端无法使用连接字符串进行连接

出于基本安全原因,我按照本指南 https://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/ 为我的后端 API 创建了一个具有受限权限的新用户,但无法使后端连接到服务器。每次尝试连接时,我都会收到

System.Data.sqlClient.sqlException: '用户'xxxx' 登录失败。'

通过在登录窗口选项中设置目标数据库,我可以通过 SSMS 登录这个新用户

后端可以使用 Azure 门户提供的认连接字符串很好地连接,女巫使用服务器管理员登录。更改新用户用户名和密码,将初始目录保持在我想要的数据库中是行不通的。 我假设后端能够访问它,因为连接字符串的 Initial Catalog 属性设置为包含用户创建的数据库。但没有任何效果

这是我在后端使用的连接字符串:

Server=tcp:xxx.database.windows.net,1433;初始目录=dbname;Persist 安全信息=假;用户 ID=newUser;Password=newUserPw;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection 超时=30;

我尝试了很多指南,但在我找到这个似乎对创建 Azure sql 用户非常了解的指南之前,没有一个奏效,但即便如此,到目前为止还没有运气。

这是我用来在我需要它连接的数据库上创建用户的命令(ofc 使用我自己的值):

-- select your db in dropdown and create a contained user 
CREATE USER [test] 
WITH PASSWORD = 'SuperSecret!',DEFAULT_SCHEMA = dbo; 
  
-- add user to role(s) in db 
ALTER ROLE db_datareader ADD MEMBER [test]; 
ALTER ROLE db_datawriter ADD MEMBER [test]; 

有人知道是怎么回事吗?我不想在我的后端使用我的管理员登录

解决方法

事实证明直接的答案是设置

持久安全信息=真;

在连接字符串中。

,

当用户名和密码包含在连接字符串中时,如果连接处于打开状态或曾经处于打开状态,则不会将密码等安全敏感信息作为连接的一部分返回,除非您设置 {{1} }.

参考:Persist Security Info sqlconnectionstringbuilder

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。