You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何添加用户到Azure SQL数据库?如何用新版Azure SDK编程添加SQL用户?

用新版Azure SDK编程添加SQL数据库用户

新版Azure Resource Manager SDK(ArmClient)负责管理Azure层面的资源(如SQL服务器、数据库),但数据库内部的SQL用户需要通过执行SQL语句来创建。以下是完整的实现步骤及代码示例:

步骤说明

  1. 从已创建的SQL服务器中提取连接所需的核心信息
  2. 使用数据库连接工具(如SqlClient)建立与目标数据库的连接
  3. 执行创建SQL用户及分配权限的SQL语句

完整代码示例

using Azure.Core;
using Azure.ResourceManager;
using Azure.ResourceManager.Sql;
using System.Data.SqlClient;

// 复用你已有的ArmClient初始化逻辑
var client = new ArmClient(credential);
var subscription = await client.GetDefaultSubscriptionAsync();
var sqlServers = subscription.GetSqlServers().ToList();
var sqlServer = sqlServers.FirstOrDefault();
if (sqlServer == null)
{
    throw new Exception("未找到目标SQL服务器");
}

// 获取SQL服务器的完全限定域名
var serverProperties = sqlServer.Data;
var serverFqdn = serverProperties.FullyQualifiedDomainName;
// 替换为你的SQL服务器管理员账号信息
var adminUsername = "你的管理员用户名";
var adminPassword = "你的管理员密码";
var databaseName = "你的目标数据库名称";

// 构建数据库连接字符串
var connectionString = $"Server=tcp:{serverFqdn},1433;Initial Catalog={databaseName};Persist Security Info=False;User ID={adminUsername};Password={adminPassword};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";

// 连接数据库并创建用户
using (var connection = new SqlConnection(connectionString))
{
    await connection.OpenAsync();

    // 1. 创建服务器级登录名(若仅需数据库独立用户可跳过此步骤)
    var createLoginSql = @"CREATE LOGIN [NewUserLogin] WITH PASSWORD = 'StrongPassword_123'";
    using (var command = new SqlCommand(createLoginSql, connection))
    {
        await command.ExecuteNonQueryAsync();
    }

    // 2. 创建数据库用户并关联登录名(若为独立用户,可改用CREATE USER [NewDbUser] WITH PASSWORD = '...')
    var createUserSql = @"CREATE USER [NewDbUser] FOR LOGIN [NewUserLogin]";
    using (var command = new SqlCommand(createUserSql, connection))
    {
        await command.ExecuteNonQueryAsync();
    }

    // 3. 为用户分配权限(示例:添加至db_owner角色)
    var grantPermissionSql = @"ALTER ROLE db_owner ADD MEMBER [NewDbUser]";
    using (var command = new SqlCommand(grantPermissionSql, connection))
    {
        await command.ExecuteNonQueryAsync();
    }
}

注意事项

  • 若使用Azure AD身份验证连接数据库,可将连接字符串中的账号密码部分替换为Authentication=Active Directory Default;
  • 确保执行代码的主体(服务主体或账户)同时拥有:Azure层面管理SQL服务器的权限,以及数据库内执行DDL语句的权限
  • 可根据需求调整权限分配逻辑,比如仅授予SELECT、INSERT等细粒度权限

内容的提问来源于stack exchange,提问作者devmne-me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:53:37