使用SQL Server OLEDB 19驱动连接Azure SQL DB时遇到问题
解决Azure SQL数据库32/64位OLEDB驱动连接兼容问题
问题背景
已安装OLEDB 19驱动,可通过Visual Studio、SSMS v17.9.1(32位程序)成功连接供应商的Azure SQL数据库,但UDL文件、SSMS 19.1(64位)、Azure Data Studio(64位)无法连接,报错:
已成功与服务器建立连接,但在预登录握手期间发生错误。(provider: TCP Provider, error: 0 - 指定的网络名称不再可用。) (Microsoft SQL Server, Error: 64)
推测为32/64位驱动兼容问题,以下是针对性解决方案:
排查与解决步骤
1. 确认64位OLEDB 19驱动完整性
- 打开64位命令提示符(不要用SysWOW64下的32位提示符),执行命令:
oledbconf.exe /getproviders - 检查输出中是否存在
MSOLEDBSQL条目,且版本为19.x。若缺失,重新下载安装官方64位版本的OLEDB 19驱动,确保安装过程无报错。
2. 修复UDL文件连接问题
- UDL文件默认关联的打开程序可能是32位的
rundll32.exe,右键UDL文件,选择「打开方式」→「更多应用」→「查找其他应用」,定位到C:\Windows\System32\rundll32.exe(64位)打开文件。 - 在UDL的「提供者」标签中,选择
Microsoft OLE DB Driver 19 for SQL Server,再配置服务器名、数据库名、账号密码,点击「测试连接」验证。
3. 调整SSMS 19.1与Azure Data Studio连接配置
- 这两个工具都是64位程序,必须使用64位驱动:
- 在连接窗口的「身份验证」下拉框旁,确认驱动选择为
Microsoft OLE DB Driver 19 for SQL Server,避免使用旧版的SQL Native Client或32位专属驱动。 - 尝试在连接属性中添加加密参数:在「高级」设置里,将
Encrypt设为Optional或Strict(需匹配供应商Azure SQL的加密要求),再重新连接。
- 在连接窗口的「身份验证」下拉框旁,确认驱动选择为
4. 网络与缓存排查
- 检查本地防火墙是否允许1433端口出站,或临时关闭防火墙测试连接。
- 打开「控制面板→凭据管理器→Windows凭据」,删除所有与目标Azure SQL服务器相关的凭据,重新输入账号密码尝试连接。
- 用64位SQLCMD验证连接:
若能成功执行,说明64位驱动与网络正常,问题出在工具的配置上。sqlcmd -S <AzureSQL服务器名>.database.windows.net -d <数据库名> -U <用户名> -P <密码>
5. 其他可能原因
- 确认你的公网IP在供应商的Azure SQL服务器防火墙白名单中(虽然旧版工具能连,但需排除IP变更导致的限制)。
- 卸载并重新安装最新版的OLEDB 19驱动,避免使用预览版或旧的子版本。
内容的提问来源于stack exchange,提问作者wilson_smyth
相关产品推荐
相关产品推荐

