适用范围:SQL Server
注意
在开始故障排除之前,请检查 先决条件 并浏览清单。
本文介绍如何创建通用数据链接(UDL)文件,并使用不同的提供程序通过该文件测试与 SQL Server 实例的连接。
创建 UDL 文件
注意
UDL 文件使你能够测试对象链接和嵌入数据库(OLE DB)提供程序与独立于完整应用程序的任何后端数据库的连接。 保存 UDL 文件会生成格式正确的连接字符串,可用于帮助生成应用程序的连接字符串或检查如何设置不同的属性。 若要获取字符串,请在记事本中打开该文件。
若要创建 UDL 文件以测试 OLE DB 提供程序,请执行以下步骤:
若要在文件资源管理器中显示文件扩展名,请执行以下步骤:
选择“开始”,然后输入文件资源管理器选项。
选择 “视图 ”选项卡,取消选中“ 隐藏已知文件类型 的扩展名”选项,然后选择“ 确定”。
导航到要在其中创建 UDL 文件的文件夹。 例如 ,C:\temp。
创建新的文本文件(如 sqlconn.txt),然后将扩展名从 .txt 重命名为 .udl。 (选择 对有关更改文件扩展名的警告消息是的 。
还可以使用以下 PowerShell 脚本在 %temp% 文件夹中创建 sqlconn.udl。
clear $ServerName = "(local)" $UDL_String = "[oledb]`r`n; Everything after this line is an OLE DB initstring`r`nProvider=MSOLEDBSQL.1;Integrated Security=SSPI;Persist Security Info=False;User ID=`"`";Initial Catalog=`"`";Data Source=" + $ServerName + ";Initial File Name=`"`";Server SPN=`"`";Authentication=`"`";Access Token=`"`"" Set-Content -Path ($env:temp + "\sqlconn.udl") -Value $UDL_String -Encoding Unicode #open the UDL Invoke-Expression ($env:temp + "\sqlconn.udl")
使用 SQL Server OLE DB 驱动程序测试连接
Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL)是最新的 SQL Server OLE DB 驱动程序。 驱动程序具有新功能,例如 TLS 1.2 和 1.3、 MultiSubnetFailover 和 Azure 身份验证方法(Microsoft Entra ID)。 建议将此驱动程序用于较新的 SQL Server 数据库。
Microsoft OLE DB Provider for SQL Server (SQLOLEDB )是旧版 OLE DB 连接提供程序。 它内置于 Windows 中,可以连接到未配置为需要 TLS 1.2 或 1.3 通道绑定的任何 SQL Server 版本。
若要使用适用于 SQL Server 的 Microsoft OLE DB 驱动程序或提供程序测试连接,请执行以下步骤:
打开 UDL 文件。
选择“ 提供程序 ”选项卡,选择应用程序中使用的 OLE DB 驱动程序或提供程序,然后选择“ 下一步”。
在“连接”选项卡上,指定网络协议、完全限定的域名(FQDN)和“选择”或输入服务器名称下的端口号。 例如,
tcp:SQLProd01.contoso.com,1433
。注意
这样一来,输入服务器名称和端口就避免了可能会干扰连接的常见问题(例如 SQL Server 浏览器服务问题)。
在 “连接 ”选项卡上输入其他属性。
注意
大多数连接测试都不需要输入数据库名称。
选择“测试连接”。
还可以选择其他选项卡并浏览其他驱动程序设置。 连接测试完成后,选择“确定”将连接字符串保存到文件。
使用 Microsoft OLE DB Provider for ODBC Drivers 测试连接
若要使用 Microsoft OLE DB Provider for ODBC Drivers 测试 Open Database Connectivity (ODBC) 驱动程序,请执行以下步骤:
打开 UDL 文件。
选择“下一步”ODBC 驱动程序>的提供程序>Microsoft OLE DB 提供程序。
在“连接”选项卡上,可以使用下列方法之一指定数据源,然后输入其他属性。
在 “使用数据源名称 ”字段中输入一个值。
输入无 DSN 连接字符串,如下所示
Driver={ODBC Driver 17 for SQL Server};Server=SQLProd01;Database=Northwind;Trusted_Connection=Yes
。
选择“测试连接”。
在 64 位计算机上测试 32 位提供程序
若要测试 64 位操作系统中 32 位提供程序的连接,请执行以下步骤:
在 命令提示符 窗口中,运行以下命令以打开 32 位 命令提示符:
%windir%\SysWoW64\cmd.exe
运行以下命令以打开 UDL 文件:
C:\temp\test.udl
如果在“提供程序”选项卡上看到Microsoft Jet 4.0 OLE DB 提供程序,则已成功加载 32 位对话框,现在可以选择 32 位提供程序来测试连接。
启动 UDL 文件
双击 UDL 文件以启动它。 下面介绍了启动 UDL 文件时使用的基础过程。
UDL 文件 UI 由 OLEDB32.DLL 提供,托管在 RUNDLL32.EXE中。
对于 32 位操作系统,或在 64 位操作系统上的 64 位提供程序,请使用以下命令(假设
C:\temp\test.udl
):Rundll32.exe "C:\Program Files\Common Files\System\OLE DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
对于 64 位操作系统上的 32 位提供程序,请使用以下命令:
C:\Windows\SysWOW64\Rundll32.exe "C:\Program Files (x86)\Common Files\system\Ole DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
.udl 文件扩展名映射到第一个命令。 对于64位操作系统上的32位提供程序,可以通过运行32位命令提示符来简化操作,然后运行START C:\TEMP\TEST.UDL
以测试32位提供程序。 (可选)可以创建使用 32 位命令的文件扩展名映射。
创建 32 位 UDL32 文件扩展名映射
如果在 64 位作系统上经常使用 32 位提供程序,则可以映射新的文件扩展名(例如 .udl32),以使用以下步骤启动 32 位 UDL 对话框。
重要
本部分、方法或任务包含说明如何修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。
将以下脚本复制到记事本,并将其另存为 udl32.reg。
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.UDL32] @="ft000001" [HKEY_CLASSES_ROOT\ft000001] @="Microsoft Data Link 32" "BrowserFlags"=dword:00000008 "EditFlags"=dword:00000000 [HKEY_CLASSES_ROOT\ft000001\shell] @="open" [HKEY_CLASSES_ROOT\ft000001\shell\open] [HKEY_CLASSES_ROOT\ft000001\shell\open\command] @="C:\\Windows\\SysWOW64\\Rundll32.exe \"C:\\Program Files (x86)\\Common Files\\system\\Ole DB\\oledb32.dll\",OpenDSLFile %1" [HKEY_CLASSES_ROOT\ft000001\shell\open\ddeexec]
双击 .reg 文件以创建注册表项,这有助于自动启动 UDL32 文件。
创建扩展名 为 .udl32 的文件。 例如 ,C:\temp\test.udl32。
双击 test.udl32 启动 32 位 UDL 对话框。 例如,你可能会看到如下所示的对话框:
排查连接问题的提示
可以使用以下方法来检查连接失败的原因。
- 更改提供程序。
- 更改协议。 例如,
tcp:
、np:
或lpc:
。 - 使用或不使用完整域后缀或仅使用 IP 地址测试连接。
- 删除端口号并使用实例名称测试 SQL Server Browser 服务。
对于上述每个方法,如果一个组合有效,另一个组合失败,它可能会给出问题线索。 例如,如果使用第二种方法(如果lpc:
有效且tcp:
不起作用)请尝试在SQL Server 配置管理器中启用 TCP 协议。
另请参阅
注意
如果本文未解决问题,可以检查 SQL Server 中的连接问题疑难解答 以获取更多帮助。