Azure SQL 包含的用户。后端无法使用连接字符串进行连接
Azure SQL Contained User. Back-end can't connect using connection string
我按照本指南 https://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/ 为我的后端 API 创建了一个新用户,出于基本安全原因限制了权限,但无法使后端连接到服务器。每次它尝试连接时,我都会收到
System.Data.SqlClient.SqlException: 'Login failed for user 'xxxx'.'
通过在登录 window 选项中设置目标数据库,我可以通过 SSMS 登录这个新用户。
后端可以很好地连接 Azure 门户提供的默认连接字符串, 使用服务器管理员登录。更改新用户的用户名和密码,将初始目录保留在我想要的数据库中是行不通的。
我假设后端能够访问它,因为连接字符串的初始目录 属性 设置为创建包含用户的数据库。但是没有任何效果。
这是我在后端使用的连接字符串:
Server=tcp:xxx.database.windows.net,1433;Initial Catalog=dbName;Persist
Security Info=False;User
ID=newUser;Password=newUserPw;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection
Timeout=30;
我尝试了很多指南,但 none 在我发现这个似乎对创建 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];
有人知道怎么回事吗?我不想在我的后端使用我的管理员登录。
原来直接的答案是设置
Persist Security Info=True;
在连接字符串中。
当用户名和密码包含在连接字符串中时,如果连接打开或曾经处于打开状态,密码等安全敏感信息不会作为连接的一部分返回,除非您设置 Persist Security info to true
.
我按照本指南 https://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/ 为我的后端 API 创建了一个新用户,出于基本安全原因限制了权限,但无法使后端连接到服务器。每次它尝试连接时,我都会收到
System.Data.SqlClient.SqlException: 'Login failed for user 'xxxx'.'
通过在登录 window 选项中设置目标数据库,我可以通过 SSMS 登录这个新用户。
后端可以很好地连接 Azure 门户提供的默认连接字符串, 使用服务器管理员登录。更改新用户的用户名和密码,将初始目录保留在我想要的数据库中是行不通的。 我假设后端能够访问它,因为连接字符串的初始目录 属性 设置为创建包含用户的数据库。但是没有任何效果。
这是我在后端使用的连接字符串:
Server=tcp:xxx.database.windows.net,1433;Initial Catalog=dbName;Persist Security Info=False;User ID=newUser;Password=newUserPw;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
我尝试了很多指南,但 none 在我发现这个似乎对创建 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];
有人知道怎么回事吗?我不想在我的后端使用我的管理员登录。
原来直接的答案是设置
Persist Security Info=True;
在连接字符串中。
当用户名和密码包含在连接字符串中时,如果连接打开或曾经处于打开状态,密码等安全敏感信息不会作为连接的一部分返回,除非您设置 Persist Security info to true
.