猿问

如何使用 C# 在 Azure SQL 数据库上创建包含的用户?

我需要使用 C# 为我的 Azure SQL 数据库创建一个包含的用户。我已经有以下用于创建数据库的代码:


// Login to Azure

var credentials = UserTokenProvider.LoginSilentAsync(clientId, domainName, username, password).Result;


// Create client

SqlManagementClient client = new SqlManagementClient(credentials)

{

    SubscriptionId = subscriptionId

};


// Database parameters

var databaseParameters = new Microsoft.Azure.Management.Sql.Models.Database()

{

    Location = "ukwest",

    ElasticPoolId = elasticPoolId,


};


// Create database

var dbResponse = client.Databases.CreateOrUpdate(resourceGroupName, serverName, databaseName, databaseParameters);

我发现以下 SQL 脚本可用于使用 SQL Management Studio 创建包含的用户,但这需要您手动连接到要为其创建用户的数据库:


CREATE USER [databaseUser] WITH PASSWORD = 'xxxxxxxxxxx';

ALTER ROLE [db_datareader] ADD MEMBER [databaseUser]

ALTER ROLE [db_datawriter] ADD MEMBER [databaseUser]

那么我如何在创建数据库后使用 C# 代码中的 SQL 脚本连接数据库,然后为该数据库创建包含的 SQL 用户,或者 Microsoft.Azure.Management.Sql.SqlManagementClient 中是否有一些等效代码可用做这个?


慕工程0101907
浏览 97回答 1
1回答

九州编程

从概念上讲,您应该将 Azure SQL 数据库视为具有(至少)2 个您可以操作的不同层:有一个 REST API 用于控制操作,例如创建数据库、更改其保留大小、恢复副本等。有一个用于数据库容器内操作的 T-SQL 接口,从创建表到插入行等。这两个表面之间可能存在一些重叠 - 在传统的 SQL Server 中,所有这些都在后一个 T-SQL 接口中公开。其中一些命令在 Azure SQL 数据库中启用,它们在内部为你调用 REST API。请注意,对 REST API 的操作使用与 Azure 门户基础结构关联的凭据。在数据库中,您可以映射到 SQL 登录名/用户,但您也可以拥有与 Azure 身份完全不关联的 SQL 登录名/用户。Net-net:您应该使用 C# SQLClient 连接到数据库,并使用具有足够权限的经过身份验证的用户(在您的情况下,可能是管理员帐户或 sa)运行这些命令,以设置新用户和角色信息。
随时随地看视频慕课网APP
我要回答