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

SQL Server创建指向另一SQL Server的PolyBase外部表失败求助

解决SQL Server PolyBase创建外部表的登录失败及连接字符串错误

问题重现

执行以下SQL创建外部数据源和外部表:

CREATE EXTERNAL DATA SOURCE Polybase_ServerTest
WITH (
LOCATION = 'sqlserver://ServerTest:1433',
--PUSHDOWN = ON,
CREDENTIAL = Credential_PolyBase
);

CREATE EXTERNAL TABLE ext.Person
(
    [person_id] [varchar](9) NULL,
    [given_names] [varchar](20) NULL,
    [surname] [varchar](30) NULL
)
WITH (DATA_SOURCE = Polybase_ServerTest, LOCATION = 'DB_Name.Schema.TableName')

出现错误:

Msg 110045, Level 16, State 1, Line 28
110045;User authorization failed: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'TestUser'. Additional error <2>: ErrorMsg: [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute

排查与解决步骤

1. 验证数据库范围凭据的创建正确性

错误提示的核心问题是登录失败+连接字符串属性无效,大概率是Credential_PolyBase的定义不符合PolyBase要求:

  • 若使用SQL Server身份认证,凭据必须按以下格式创建,不要添加多余属性:
CREATE DATABASE SCOPED CREDENTIAL Credential_PolyBase
WITH
    IDENTITY = 'TestUser', -- 仅填SQL用户名,不要加域名或前缀
    SECRET = 'TestUser的登录密码'; -- 确保密码正确,无特殊字符转义问题
  • 若使用Windows身份认证,IDENTITY必须是DOMAIN\用户名格式,且当前SQL Server服务账户需具备委派权限(跨服务器场景):
CREATE DATABASE SCOPED CREDENTIAL Credential_PolyBase
WITH
    IDENTITY = 'DOMAIN\TestUser',
    SECRET = 'Windows账户密码';

2. 确认目标服务器的TestUser权限

在目标SQL Server(ServerTest)上完成以下配置:

-- 创建登录名
CREATE LOGIN TestUser WITH PASSWORD = '对应密码';
-- 映射到目标数据库用户
USE DB_Name;
CREATE USER TestUser FOR LOGIN TestUser;
-- 授予表访问权限
GRANT SELECT ON Schema.TableName TO TestUser;

3. 检查外部数据源的可访问性

  • 把ServerTest替换为目标服务器的IP地址(如sqlserver://192.168.1.100:1433),规避DNS解析问题;
  • 确认当前SQL Server所在服务器能通过1433端口访问目标服务器(检查防火墙、网络策略)。

4. 验证ODBC驱动兼容性

部分SQL Server版本(如2016/2017)对ODBC Driver 17的兼容性存在问题,尝试降级到ODBC Driver 13.1版本后重新测试。

内容的提问来源于stack exchange,提问作者Liem Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:26:23