You need to enable JavaScript to run this app. 如何在Azure SQL数据库中跨库创建master库的登录名
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure SQL数据库中跨库创建master库的登录名

Azure SQL 从业务库创建master库登录名的实现方案

Azure SQL 数据库单库模式原生不支持USE语句跨库切换上下文,你遇到的报错翻译为:USE 语句不支持在不同数据库之间切换,请使用新连接来连接到其他数据库。要从业务库(如示例中的Abc Database)侧完成master库的登录名创建,可使用以下几种方式实现:


方案1:通过EXTERNAL DATA SOURCE(弹性查询)跨库执行

该方式不需要切换连接,直接在业务库内完成master库的语句执行,步骤如下:

  1. 在业务库中创建指向master库的数据库范围凭据
CREATE DATABASE SCOPED CREDENTIAL Master_Credential
WITH 
    IDENTITY = '你的Azure SQL服务器管理员账号',
    SECRET = '你的Azure SQL服务器管理员密码';
  1. 创建指向同服务器master库的外部数据源
CREATE EXTERNAL DATA SOURCE Master_DataSource
WITH (
    TYPE = RDBMS,
    LOCATION = '你的Azure SQL服务器名.database.windows.net',
    DATABASE_NAME = 'master',
    CREDENTIAL = Master_Credential
);
  1. 通过EXEC AT语法在master库上下文执行创建登录名的语句
EXEC('CREATE LOGIN [自定义登录名] WITH PASSWORD = N''符合Azure SQL密码复杂度要求的字符串'';')
AT Master_DataSource;

方案2:通过Azure管理工具/SDK直接执行

如果不需要在SQL侧完成逻辑,也可以通过Azure官方管理工具跨库执行master语句,无需配置外部数据源:

  • PowerShell示例:
Connect-AzAccount
# 直接在SQL服务器的master库执行创建登录名语句
Invoke-AzSqlServerExecute `
    -ResourceGroupName "你的资源组名称" `
    -ServerName "你的Azure SQL服务器名" `
    -Query "CREATE LOGIN [自定义登录名] WITH PASSWORD = '符合复杂度要求的密码'"
  • Azure CLI示例:
az login
az sql server execute \
    --resource-group 你的资源组名称 \
    --server 你的Azure SQL服务器名 \
    --query "CREATE LOGIN [自定义登录名] WITH PASSWORD = '符合复杂度要求的密码'"

方案3:优先使用包含用户(无需登录名)

如果你的场景不需要创建服务器级别的登录名,仅需要账号访问业务库,可以直接在业务库创建包含用户,完全不需要访问master库,也可以规避USE语句限制:

-- 直接在业务库执行即可,无需操作master库
CREATE USER [自定义用户名] WITH PASSWORD = N'符合复杂度要求的密码';
-- 授予对应业务权限,示例为授予只读权限
ALTER ROLE db_datareader ADD MEMBER [自定义用户名];

内容的提问来源于stack exchange,提问作者property kpt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 02:15:11