我正在尝试从 Excel 2007 连接到 Microsoft SQL Server 2008 R2。当它尝试连接时我收到错误:
[DBNETLIB][ConnectionOpen (Invalid Instance())。]无效连接。
重现步骤
- 在数据选项卡中获取外部数据组,点击其他来源,然后点击从 SQL Server:
在服务器名称盒子。
要输入数据库用户名和密码,单击使用以下用户名和密码,然后在相应的用户名和密码盒子:
附加信息
我能连接到 SQL ServerSQL Server 管理工作室:
我能使用以下方式连接到 SQL Server
telnet
:C:\Users\Ian>telnet avenger 1433
SQL 服务器是监听端口 1433:
Excel做连接并接收来自 SQL Server 的响应流量:
我能
ping
服务器:C:\Users\Ian>ping avenger Pinging avenger.newland.com [192.168.1.244] with 32 bytes of data: Reply from 192.168.1.244: bytes=32 time=1ms TTL=128 Reply from 192.168.1.244: bytes=32 time<1ms TTL=128 Reply from 192.168.1.244: bytes=32 time<1ms TTL=128 Reply from 192.168.1.244: bytes=32 time<1ms TTL=128 Ping statistics for 192.168.1.244: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 1ms, Average = 0ms
尝试通过 IP 地址(而不是名称)连接无效:
Windows 防火墙不是在服务器上运行:
答案1
我大胆猜测,您实际上正在使用命名实例,并且 SQL Native 客户端允许您使用它AVENGER
作为服务器名称,但是DBNETLIB
(我相信是旧的 SQL 客户端)要求更高。
你确定不是吗AVENGER\SQLEXPRESS,1433
?
答案2
我有同样的问题。
SQLOLEDB.DLL
旧应用程序已在中注册了旧版本
C:\Windows\System32
通过运行以下命令进行修复:
regsvr32 "c:\Program Files\Common Files\System\Ole DB\sqloledb.dll"
和
del c:\WINDOWS\system32\sqloledb.dll
答案3
使用 SQL 服务器数据服务器名称在 Excel 2013 中为我解决了此问题
- 使用 SQL Server Management Studio 连接到数据库服务器
- 右键单击服务器对象资源管理器
- 选择属性
- 使用姓名服务器的“常规属性”页面上列出的值
答案4
从 Access 2007 连接到 SQL Server 2016 时我遇到了同样的问题。对我来说,解决方案是启用 TCP/IP 协议(在 SQL Server 配置管理器中)。