SSMS v19.1下Excel单元格参数传入SQL Server的实现求助
问题解决:Excel 365 连接 SQL Server 并实现参数传递(替代SNAC 11)
核心问题
SSMS v19.1移除了SQL Server Native Client (SNAC) 11,导致原有依赖该驱动的Excel参数查询连接失效,且新建连接时Properties/Definition窗口的Parameters选项呈灰色不可用。
解决方案步骤
1. 替换驱动:改用ODBC Driver for SQL Server
SNAC已被微软弃用,官方推荐使用ODBC Driver 17/18 for SQL Server,这是支持Excel参数传递的替代方案。
新建连接流程:
- 打开Excel,点击「数据」选项卡 → 「获取数据」→ 「从数据库」→ 「从SQL Server数据库」
- 输入服务器名称
SQL-CSC和数据库CCRDR,选择「使用Windows身份验证」(对应原连接的Trusted_Connection=Yes) - 连接成功后,选择直接输入自定义SQL(即你的示例查询)
- 关键:加载数据前点击「转换数据」进入Power Query编辑器,在这里完成参数绑定
2. 在Power Query中实现参数传递(替代原Parameters窗口)
新驱动不支持旧版ODBC参数机制,需通过Power Query关联单元格:
- 在Power Query编辑器中,点击「主页」→ 「参数」→ 「新建参数」
- 参数名称:
Sample_Location_Param - 类型:文本(匹配字段类型)
- 当前值:先填测试值(如
LabA)
- 参数名称:
- 修改查询SQL,将
?替换为参数:SELECT * FROM [CCR].[SampleData] WHERE (SampleType = 'Chemical') AND (Sample_Location = @Sample_Location_Param) - 右键查询步骤 → 「编辑参数」→ 选择「从单元格获取值」,指定参数对应的单元格(如
Sheet1!$A$1) - 关闭Power Query编辑器,选择「关闭并上载」,查询会自动读取单元格值作为参数
3. 快速修改现有连接字符串
若不想重新创建连接,可直接替换驱动:
原连接字符串:
Description=CCR_Query;DRIVER=SQL Server Native Client 11.0;SERVER=SQL-CSC;UID=MyName;Trusted_Connection=Yes;APP=Microsoft Office;WSWS=CSCENG022020;DATABASE=CCRDR;
修改为(使用ODBC Driver 17):
Description=CCR_Query;DRIVER=ODBC Driver 17 for SQL Server;SERVER=SQL-CSC;Trusted_Connection=Yes;APP=Microsoft Office;DATABASE=CCRDR;
注意:移除
UID=MyName,因Trusted_Connection=Yes已使用Windows身份验证,无需单独指定UID
修改后仍需通过Power Query设置参数关联。
需向IT部门说明的事项
- 需要在你的电脑上安装ODBC Driver 17或18 for SQL Server(微软官方免费驱动,可直接从微软下载中心获取)
- 无需额外数据库权限,原Windows身份验证权限即可使用
- 兼容性说明:ODBC Driver 17+支持SQL Server 2012及以上版本,与现有数据库兼容
内容的提问来源于stack exchange,提问作者Bonneroo
相关产品推荐
相关产品推荐

