我需要使用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 ?
答案 0 :(得分:4)
从概念上讲,您应该考虑Azure SQL数据库具有(至少)两个可以在其上进行操作的不同层:
这两个表面可能会有一些重叠-在传统的SQL Server中,所有这些都在后面的T-SQL界面中公开。其中一些命令已在Azure SQL数据库中启用,它们正在内部为您调用REST API。
请注意,对REST API的操作使用与Azure的门户基础结构关联的凭据。在数据库内,您可以映射到SQL登录名/用户,但也可以具有完全不与Azure身份关联的SQL登录名/用户。
网络:您应该使用C#SQLClient连接到数据库,并使用具有足够权限(经过验证的用户,可能是管理员帐户或sa)的经过身份验证的用户运行这些命令,以设置新的用户和角色信息