2012-08-03 51 views
2

使用ADO连接到SQL Server的默认实例的C++销售点应用程序在具有用于网络连接的无线网卡的平板电脑上使用时失败。使用无线网卡但连接到LAN的ADO连接到SQL Server失败。使用lpc:?

当连接LAN电缆时,该应用程序在平板电脑上正常工作。

测试人员发现使用SQL Server的另一个服务器应用程序遇到类似问题,直到他们更改设置以将共享内存连接用于SQL Server实例而不是TCP连接。

,我们正在使用的连接字符串如下:

"Provider=MSDASQL;DRIVER={SQL Server};SERVER=(local);DATABASE=%s;UID=; Password=;" 

阅读此网页,似乎才能使用共享内存连接,SERVER=(local)关键字需要指定SERVER=lpc:(local)但我不知道那个。

该网页是SqlConnection.ConnectionString Property From Microsoft MSDN

+0

有可能SQL Server实例已被配置为只侦听某些IP地址,可能只有有线网络的一个。 – 2012-08-03 22:44:59

+0

谢谢你的建议,以检查一些东西。我会让测试团队研究一下。我们的大多数客户只是做标准安装,然后不要碰它。然而,对于这个特定的客户,部署团队可能会做一些特殊的事情,作为无线蜂窝环境中移动销售终端的一部分。终端返回到仓库,以便在下次使用时再次使用局域网连接来提取“每日结束”财务数据。 – 2012-08-04 14:31:27

+0

将销售点应用程序和库存应用程序的连接字符串更改为使用SERVER = lpc :(本地)关键字/值后,测试团队在使用无线单元卡时不再出现问题。另见http://stackoverflow.com/questions/11810133/ado-error-16389-with-local-access-sql-server-database-connection-failing-when-u – 2012-08-05 20:55:18

回答

0

进行更改为两个销售点应用和使用SERVER=lpc:(local)关键字/值对库存应用程序的连接字符串后,测试团队不再当看到一个问题正在使用无线蜂窝卡。

所以lpc:强制使用共享内存。

另请参阅ADO Error 16389上的此问题。

增补为解决的另一个组件(OCT-24-2016)

在正在使用我们的,我们也使用Datacap系统NETePay服务器来处理电子支付交易的销售点领域的网站。

由于客户提出销售点配置错误,我们最近发现NETePay服务器遇到了类似的问题。来自DSI Client-X控件的XML响应是一个“错误”,错误代码为001501,错误文本开始为“ScratchWrite期间的数据库错误”。

回想起这个问题以及解决方案,我们修改了Datacap Systems SQL Server实例的设置,通过将TCP/IP从“启用”更改为“禁用”来更改“DATCAPINSTANCE协议”。进行此更改后,客户不再看到错误。