使用Azure Function向Azure SQL Database加载数据出现18456登录错误
Azure SQL 同一服务器下Dev库登录失败18456问题排查方案
- 检查登录名的数据库映射配置
服务器级SQL登录名需要单独映射到每个目标数据库的用户账号,你大概率仅在Datawarehouse库完成了用户映射和权限配置,未在Datawarehouse-Dev库做对应配置。
解决方法:使用管理员账号登录数据库服务器,切换到Datawarehouse-Dev库执行如下SQL:-- 为服务器登录名AzureFunction创建当前库的映射用户 CREATE USER [AzureFunction] FOR LOGIN [AzureFunction]; -- 按需分配读写权限,可根据实际业务调整权限范围 ALTER ROLE db_datawriter ADD MEMBER [AzureFunction]; ALTER ROLE db_datareader ADD MEMBER [AzureFunction]; - 核对连接字符串的数据库名称拼写
目标库名包含特殊字符横杠,确认连接字符串中Initial Catalog/Database参数的取值和实际库名完全一致,没有多余空格、拼写错误、大小写不匹配的问题。 - 确认Dev库的运行状态
登录Azure门户查看Datawarehouse-Dev库的运行状态,确认库处于在线状态,没有被暂停(无服务器计算层可能自动暂停)、设置为只读或触发其他资源限制。 - 排查18456错误详细状态定位根因
你可以在Azure SQL服务器的审计日志中查询该18456错误的具体状态码,常见状态对应原因如下:- 状态5:当前目标库下不存在匹配的用户
- 状态6:登录名与数据库用户映射关系不匹配
- 状态40:目标数据库不存在或处于不可用状态
内容的提问来源于stack exchange,提问作者adnane
相关产品推荐
相关产品推荐

