gpt4 book ai didi

azure - Azure 移动服务使用什么权限通过 mssql 对象访问 Azure SQL 数据库?

转载 作者:行者123 更新时间:2023-12-02 06:34:58 25 4
gpt4 key购买 nike

我已经像往常一样设置了与 Azure SQL 数据库关联的 Azure 移动服务 (AMS)。但是,当我尝试使用自定义 API 通过自定义 API mssql 对象查询另一个表(不是移动服务表)时,出现权限错误:

Error: [Microsoft][SQL Server Native Client 10.0][SQL Server]Login failed for user 'zwxABOesblahblahHYzLogin'.

一些注意事项:

  • 我必须删除数据库,然后在创建移动服务后以相同的名称重新创建它。
  • 移动服务名称为“abc”,我尝试访问的表属于“abc”架构,而不是 dbo。另一个表是通过标准 T-SQL 脚本从 SQL Server Management studio 创建的。

AMS api 脚本非常基本:

exports.get = function(request, response) {
var mssql = request.service.mssql;
var sql = "select * from abc.TestTable";

mssql.query(sql, {
success : function(results) {
console.log("Results from SQL Query to TestTable:\n"+results);
response.send(statusCodes.OK, results);
},
error: function(err) {
console.log("Error in SQL Query to TestTable:\n"+err);
response.send(statusCodes.Error,err.message);
}

});

};

那么我的问题...AMS 使用什么凭据来访问 SQL 数据库?我怎样才能更改权限,以便上面的脚本正常工作(正如我见过的所有文档所暗示的那样!)。或者我是否必须按照此 question 的建议传递连接字符串? .

谢谢!

最佳答案

当您创建移动服务时,它会生成 SQL 数据库后端,或连接到现有的 SQL 数据库。执行此操作时,会创建一个具有随机名称的 SQL 登录用户。在您的情况下,用户是“zwxABOesblahblahHYzLogin”。当您删除并重新创建数据库时,您失去了有权访问数据库的用户(我认为您已经知道了)。

为了确定分配给创建的用户的权限,我创建了一个新的移动服务,然后使用 SQL Management Studio 编写整个数据库的脚本(我修改了脚本选项以确保权限包含在脚本中)。然后我将其精简为与用户和架构相关的内容。如果您已经重新创建了架构,则可以跳过该部分。

CREATE USER [zwxABOesblahblahHYzLogin] FOR LOGIN [zwxABOesblahblahHYzLogin] WITH DEFAULT_SCHEMA=[abc]
GO
GRANT CONNECT TO [zwxABOesblahblahHYzLogin] AS [dbo]
GRANT CREATE TABLE TO [zwxABOesblahblahHYzLogin] AS [dbo]
CREATE SCHEMA [abc]
GRANT CONTROL ON SCHEMA::[abc] TO [zwxABOesblahblahHYzLogin] AS [dbo]

由此看来,AMS 用户被授予了数据库登录权限、连接权限、创建表权限,然后被授予了作为 DBO 的架构控制权。

我通过删除移动服务然后重新创建它来测试这一点,我认为这会让我们处于相同的场景中。

关于azure - Azure 移动服务使用什么权限通过 mssql 对象访问 Azure SQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com