使用dbt Core连接本地SQL Server失败,求故障排查指导
本地SQL Server与dbt Core连接故障排查指导
问题背景
每次尝试用dbt Core连接本地SQL Server均失败,已尝试创建带密码的独立账号等方法,仍未解决。当前正在测试dbt快照模型,已创建TEST_DBT_EXAMPLE_ONE数据库,包含STG和ARCH两个架构,计划将多源数据导入STG后在ARCH生成快照。
当前profiles.yml配置
mssql_example_1: target: dev outputs: dev: type: sqlserver driver: 'ODBC Driver 17 for SQL Server' # (The ODBC Driver installed on your system) Found under ODBC Data Sources - Drivers server: GHOST # This is my local 'Server name' (login screen) port: 1433 database: TEST_DBT_EXAMPLE_ONE schema: STG # Should this be dbo? windows_login: True
执行dbt build时的错误信息
Encountered an error: Database Error ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it. \r\n (10061) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (10061)')
故障排查步骤
1. 验证SQL Server实例地址
- 打开SQL Server Management Studio(SSMS),确认登录界面的服务器名称:默认实例为
localhost或计算机名;命名实例格式为计算机名\实例名(如GHOST\SQLEXPRESS),当前配置的GHOST需匹配实际实例名,命名实例必须带后缀。 - 尝试用
127.0.0.1替换GHOST,排除DNS解析问题。
2. 检查SQL Server TCP/IP配置
- 打开SQL Server配置管理器,展开
SQL Server网络配置,确保目标实例的TCP/IP协议为已启用。 - 双击
TCP/IP进入IP地址标签:IPAll部分确认TCP端口为1433(默认实例);若为命名实例,可取消TCP动态端口勾选,设置固定端口1433,或在配置中填写实际动态端口号。- 确保
IP1(127.0.0.1)和IP2(本地IP)的已启用设为是。
- 重启SQL Server服务使配置生效。
3. 验证端口可访问性
- 用命令提示符执行
telnet GHOST 1433,或PowerShell执行Test-NetConnection GHOST -Port 1433,若连接被拒绝,说明端口未开放或SQL Server未监听该端口。 - 检查Windows防火墙,确保允许SQL Server端口(1433)通过,可临时关闭防火墙测试连接。
4. 核对ODBC驱动与权限
- 打开64位ODBC数据源管理器(dbt多运行在64位环境),在
驱动程序标签确认ODBC Driver 17 for SQL Server已安装。 - 用当前Windows账号登录SSMS,尝试访问
TEST_DBT_EXAMPLE_ONE数据库及STG架构,验证权限是否正常。
5. 调整profiles.yml参数
- 若为命名实例,修改
server为GHOST\实例名,可尝试移除port配置(命名实例依赖SQL Browser服务解析端口)。 - 临时将
schema改为dbo测试,排除架构名称问题,连接成功后再改回STG。 - 若Windows登录仍失败,切换为SQL Server账号验证:添加
username和password字段,将windows_login设为False,确保该账号拥有数据库访问权限。
内容的提问来源于stack exchange,提问作者EStark
相关产品推荐
相关产品推荐

