问题标签 [sqlncli]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
34582 浏览

sql - 链接服务器 SQLNCLI 问题。“没有交易处于活动状态”

我试图执行一个存储过程并将其结果简单地插入一个临时表中,我收到以下消息:

无法执行该操作,因为链接服务器“MyServerName”的 OLE DB 提供程序“SQLNCLI”无法开始分布式事务。链接服务器“MyServerName”的 OLE DB 提供程序“SQLNCLI”返回消息“没有处于活动状态的事务。”。

我的查询如下所示:

确切的列号,名称,问题不是结果。

两台计算机都允许并启动 MSDTC,远程过程调用也是如此。

这些机器不在同一个域中,但我可以从我的机器执行远程查询并获得结果。我什至可以执行存储过程并查看其结果,只是无法将其插入另一个表中。

编辑


哦,我忘了提,存储过程不会触发任何触发器。它只将记录插入到它自己创建的用于数据处理的临时表中。

0 投票
2 回答
35049 浏览

asp.net - 浏览时如何检查客户端是否安装了 SQLNCLI10 提供程序?

我有一个 ac# 网站,允许客户端通过使用第 3 方 ActiveX 控件绕过 Web 服务器,从他们的 PC 直接连接到远程 SQL Server 数据库。我最初使用的是SQLOLEDB提供程序,它工作正常。客户端位于内部网络中(使用 Windows 机器和 Internet Explorer),并且该网站不适合暴露于一般互联网。

我不得不从使用SQLOLEDB提供程序升级到SQLNCLI10提供程序,以适应 SQL Server 2008 中的新数据类型。它在我的 PC 上工作,但在生产中中断。我没有意识到它之所以有效,是因为SQLOLEDB提供程序是 Windows 操作系统 (MDAC/WDAC) 的一部分,因此已经存在于客户端的 PC 上。SQLNCLI10提供程序包含在 SQL Server 2008 中,必须单独安装在客户端计算机上(因为它们中的大多数都没有安装 SQL Server,但我有)。

我可以为他们提供一个链接,让他们从中下载独立的 Microsoft SQL Server 2008 Native Client 提供程序,但我如何检查他们是否已经安装了它?

0 投票
8 回答
11402 浏览

sql-server - Delphi 与 SQL Server:OLEDB 与 Native Client 驱动程序

我被告知 SQL Native Client应该比 OLEDB 驱动程序更快。所以我把一个实用程序放在一起,在两者之间进行负载测试——结果好坏参半。有时一种更快,有时另一种更快,无论查询是什么(简单的选择、where 子句、连接、排序依据等)。当然,服务器承担了大部分工作负载,但我感兴趣的是从数据进入 PC 到数据在应用程序中可访问的时间之间的时间。

负载测试由非常小的查询组成,这些查询返回非常大的数据集。例如,我这样做select * from SysTables了,这个表有 50,000 多条记录。收到数据后,我又对结果进行了循环加载(使用 while notQ.eof ... Q.next ...等)。我还尝试向查询中添加一些内容——例如字段order by Val在哪里。Valvarchar(100)

这是我的负载测试器的示例,最底部的数字是平均值...

在此处输入图像描述

那么实际上,两者之间有什么区别?我知道 OLE 非常灵活并且支持许多不同的数据库引擎,而 Native Client 只针对 SQL Server。但是幕后还有什么?这对 Delphi 使用这些驱动程序的方式有何影响?

这也是专门通过TADOConnection组件使用 ADO 的TADOQuery

我不一定要寻找或寻求提高性能的方法——我只需要知道驱动程序之间的区别是什么。

0 投票
1 回答
16519 浏览

sql-server - SQL Native Client 和 SQL Native Client 10 有什么区别?

从 SQL Server 2005 升级到 2008 时,任何人都可以将我引导到概述将连接字符串从 SQLNCLI 更改为 SQLNCLI10 的一般或详细原因的链接或来源吗?

在数据类型问题之外,我没有看到任何差异。我只想以最少的复杂性尽可能少的步骤,如果没有性能提升或功能缺失。我只是不明白做这一步的意义,至少现在是这样。

0 投票
1 回答
1405 浏览

sql-server-2005 - 无法从链接服务器中删除记录

在过去的两天里,我一直在到处寻找解决问题的方法,但没有任何运气。

我有这个从远程服务器删除记录的查询:

我收到了这个错误:

它还建议使用sp_addlinkedserver添加链接服务器。

一些注意事项:

  1. 这只发生在这台特定的计算机 + 远程服务器上。在 2 个不同的站点(计算机+服务器)上它工作得很好。
  2. 插入到 OpenRowSet 工作正常。
  3. 从 OpenRowSet 中选择 * 工作正常。=> 将删除更改为选择 * 工作正常。
  4. 在查询的计算机上启用了 Ad hok
  5. 通过 openrowset 查询的计算机上启用了远程连接
  6. 我可以 ping 服务器 (AB01S)

到目前为止,我已经尝试通过 GUI 和sp_addlinkserver.

0 投票
5 回答
52422 浏览

sql - 'SQLNCLI' 提供程序未在本地计算机上注册,sql server 2012

致力于将应用程序从我的开发箱部署到客户端。在客户端上,当我运行我的 exe 时,我收到错误“'SQLNCLI10' 提供程序未在本地计算机上注册。

我正在 SQL Server 2012 中开发。我尝试在目标机器上安装 sqlncli.msi,但没有成功。

谁能告诉我我需要在客户端机器上安装什么包才能让我的应用程序工作?如果可能的话,请提供该包裹的 URL?

谢谢!

0 投票
1 回答
886 浏览

sql-server-2008 - 带有 Windows 8 的 SQLNCLI10 提供程序

我在使用 Windows 8 时遇到问题。

我在 VB6 中有一个使用 SQL Server 2008 的应用程序,通过网络使用 SQLNCLI10 提供程序,我总是安装它sqlncli10.msi,但是当我尝试在装有 Windows 8 的 PC 上安装时,我不能......说它不再受支持.

我使用ADO进行连接,字符串连接为:

有任何想法吗?

0 投票
4 回答
24832 浏览

sql-server-2008 - 无法从 Linux 连接到 SQL Server

我正在尝试连接到 CentOS 5.8 上的 SQL Server 2008。我正在使用 unixODBC 2.3.0 和 SQL Server ODBC 驱动程序 (www.microsoft.com/en-us/download/details.aspx?id=28160)。

当我尝试通过运行测试连接时:

它给了我:

端口是开放的,服务器是可访问的。

我试图进一步诊断问题,但被困在这里:

显然,建立连接时出现了问题。

谁能帮我?如果您需要任何其他信息,请告诉我。

谢谢

0 投票
0 回答
138 浏览

sql-server - 用于调试 SQLNCLI 连接的应用程序

我很难让一个使用 SQL 本地客户端连接到我的 SQL Server 的应用程序,到目前为止它运行得很好。源服务器上的 SQL Profiler 表明我的麻烦应用程序甚至没有连接到服务器。我在应用程序日志或 Windows 事件日志中找不到任何内容。

我想通过使用另一个应用程序连接来独立证明问题不是机器上的 SQL 配置。我已经尝试使用 SQLNCLI 驱动程序使用 ODBC,它工作正常,但我不确定这是否与直接使用 SQLNCLI 的代码相同。由于我的服务器上有 32 位和 64 位版本的驱动程序,这件事更加令人困惑。是否有任何独立或命令行实用程序可用于模拟应用程序与 SQL 的连接并分析我可能返回的任何调试消息。

我在服务器 2008 x64 机器上,连接到 SQL Server 2008 x64 镜像。

0 投票
1 回答
452 浏览

sql-server - 具有 NULL 字段值的 Sql Server ODBC TVP 过程

摘要:如何使用 odbc 完全绑定多行缓冲区技术在表值参数的行/列索引处指定可为空的字段值?

详细信息:我定义了一个表类型如下:

所以 Timestamp 不能为空,但 Value 可以。

现在我使用这个新定义的类型作为表值参数创建一个新的存储过程:

为了测试这个新过程,我编写了以下代码,注意第 2 行的 [Value] 字段为空:

声明@BatchTVP AS [tp_Transition];

上面的代码工作正常,值按预期插入到表中。

现在,我想使用 ODBC 和具有完全绑定多行缓冲区的表值参数从 c++ 复制此 sql 代码(将数据作为具有内存中所有值的 TVP 发送),如本文所述: http ://technet.microsoft.com /en-us/library/ff878030.aspx

我已经阅读了规范的大部分页面,但无法确定实现这一目标的方法。

感谢您的任何提示。

弗雷德里克