0

我按照本指南https://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/为我的后端 API 创建了一个新用户,出于基本安全原因但可以'不要让后端连接到服务器。每次尝试连接时,我都会得到

System.Data.SqlClient.SqlException:“用户‘xxxx’登录失败。”

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

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

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

服务器=tcp:xxx.database.windows.net,1433;初始目录=dbName;持久安全信息=False;用户 ID=newUser;密码=newUserPw;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;连接超时=30 ;

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

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

-- 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]; 

有谁知道发生了什么?我不想在我的后端使用我的管理员登录。

4

2 回答 2

0

原来直接的答案是设置

持久安全信息=真;

在连接字符串中。

于 2021-07-30T14:29:30.570 回答
0

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

参考:持久安全信息sqlconnectionstringbuilder

于 2021-08-02T09:33:18.357 回答