问题标签 [sql-server-native-client]
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.
sql-server - 升级 SQL Server 2005 SP3 Native Client 的影响是否已连接客户端?
我正在将我的一些 SQL Server 2005 SP3(内部版本 9.00.4060.0)实例升级到 SQL Server 2005 SP4 RTM(内部版本 9.00.5000.0),然后再继续升级当前使用的同一服务器上的实例这生意。一旦我看到安装成功,我将继续在其余实例上安装 SP4,然后继续使用我们的生产服务器。
问题
如果我在服务器上升级 Native Client,我是否也必须在所有办公室员工桌面上升级 Native Client?还是他们可以简单地保留其 Native Client 的当前版本,而我可以继续进行服务器/实例升级?
谢谢,
迈克尔·默里
ms-access - SQL Server Native Client 11 应该在服务器上还是在每台客户端机器上
我需要将一些 MS Access 客户端应用程序连接到 SQL Server 数据库。Native Client 需要安装在每台客户端机器上还是只安装在服务器上?
c++ - 迁移到 sql 本机客户端会导致 db 上出现问号
我们已经迁移到本机 sql server 10。从那时起,所有通过将 c++ 代码传递到数据库的 unicode 字符(例如希伯来语)都变成了问号。在迁移之前一切正常。知道为什么会这样吗?
谢谢
编辑:连接字符串生成器:
至于我们使用的代码中的其他地方,它在非常广泛的上下文中使用。很难用这么大的系统展示例子。无论如何,我可以确定您在使用 unicode 之前可以正常工作,这也不是新表
sql-server - 使用表值参数时 SQL Native 客户端接口错误 8058,无法诊断原因
我编写了一个函数,它使用表值参数将数据发送到 T-SQL 存储过程。这是我第一次这样做,我被这个错误卡住了:
不幸的是,我在网上找不到任何资源来提供解决此类错误的解决方案。从消息中我不知道这里出了什么问题。
在下面的代码中调用 SQLExecDirectA 时会发生错误。
这是对应的存储过程。
这是表格类型。
任何帮助如何解决这个问题将不胜感激。
c++ - 从 SQL Server 返回 C++ 本机客户端中的 NULL 数据类型
我正在编写使用 SQL Server 本机客户端 sqlncli.h 的小型 C++ 控制台应用程序(VS 2013 / Windows7)。我在程序中遇到了 NULL 字段的问题 - 我没有看到正确的值。
表1结构:
在控制台中,我看到前 3 个字段正确,但第四个字段就像╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ 如何捕获 VARCHAR、NVARCHAR、FLOAT 类型的 NULL 字段?
c++ - 如何在 ODBC 本机客户端中获取 SQL Server DateTime 字段
我有 SQL Server 表:
我通过代码获取数据:
但是我date
在输出中将字段作为 char 数组:2014-01-01 00:00:00.000 如何获取此字段,例如,以 FILETIME 格式或更方便的 C++ 数据类型?谢谢。
sql-server - 无法使用 SQL Native Client 创建 ODBC 数据源
我在系统 A 上创建了 SQL Server 2005 和一些数据库。然后我必须通过克隆系统 A 创建系统 B。我对 ip 和主机名进行了所有必要的更改,并对 sql server 配置进行了相应的更改。
早些时候,我在系统 C 上创建了一个 ODBC 数据源以连接到系统 A 上的 sql server,一切正常。克隆后,我尝试修改 odbc 数据源以连接到系统 B 上的 sql server。但出现以下错误
所有 3 个系统都在同一个网络上。奇怪的是,我只有在从系统 C 创建数据源时才收到此错误。我可以在系统 A 上创建数据源到系统 B 上的 SQL Server。似乎系统 C 有问题,但在那种情况下我不应该能够在系统 C 上创建数据源以连接到系统 A,而我可以。
系统 C 上的数据源到系统 A 上的 sql server:成功 系统 A 上的数据源到系统 B 上的 sql server:成功 系统 C 上的数据源到系统 B 上的 sql server:失败
有人可以指出可能导致这种情况的原因吗?
sql-server - SQL Server Native Client SQLNCLI11 和 SQLNCLI11.1 有什么区别?
我正在查看一个带有 Provider=SQLNCLI11 的连接字符串和另一个带有 Provider=SQLNCLI11.1 的连接字符串,我想知道两者之间的区别是什么。
SQLNCLI11 和 SQLNCLI11.1 有什么区别?
c++ - 如何使用新的 SQL Server Native Client 将 datetime 迁移到 datetime2
我们目前正在将我们的数据库从SQL Server Native Client v11 (SQL Server 2012)迁移datetime
到包括在内。datetime2
数据库更新很容易完成,但问题出现在我们想要使用的新 SQL Server Native Client 11 上。
一般来说,我们的 CRUD 操作有带有“COLUMN_ENTRY*”访问器的 OLE DB 消费者。对于datetime2
列,成员的类型为DBTIMESTAMP
。使用SQLNCLI
提供者,小数部分DBTIMESTAMP
被默默地截断为支持的值。使用SQLNCLI11
带有太精确分数的插入会导致此错误:
DB_E_ERRORSOCCURRED Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
根据此链接,如果将太多数据插入到字段中,则会返回此错误。由此我假设 DBDATETIME 成员的小数部分太精确而无法插入。根据此链接,新的 Native Client 版本(10 和 11)不会截断,但会因错误而失败。以我们想要实现的这个简化示例为例:
在代码的某些部分,我将时间戳初始化为 2015-08-10 07:47:49.986149999 并且插入失败。如果我将分数重置为 0,则插入有效;0 以外的任何值都失败。我尝试使用COLUMN_ENTRY_PS
各种值提供日期时间精度和比例,但插入总是失败。
我们如何强制 Native Client 简单地接受该值并截断它?很明显,我们不能手动将所有值截断为支持的 DB 精度。我找不到任何关于如何在新的 Native Client 中使用 datetime2 的适当文档。我们是否缺少正确处理 datetime2 的任何转换或设置?
这是测试设置:
- 视窗 7 64 位
- SQL Server 本机客户端 11 (SQLNCLI11)
- SQL Server 2012
- DBPROP_INIT_LCID=2055
- DBPROP_INIT_PROMPT=4
- DBPROP_INIT_DATASOURCE=本地主机
- DBPROP_AUTH_INTEGRATED=SSPI
对于SQLNCLI
提供者,相同的代码可以工作。
[EDIT#1]:我使用转储了更多错误信息AtlTraceErrorRecords
,这证实了与链接的 Microsoft Connect 报告中相同的错误:
Row #: 0 Source: "Microsoft SQL Server Native Client 11.0" Description: "The fractional part of the provided time value overflows the scale of the corresponding SQL Server parameter or column. Increase bScale in DBPARAMBINDINFO or column scale to correct this error." Help File: "(null)" Help Context: 0 GUID: {0C733A63-2A1C-11CE-ADE5-00AA0044773D}
[EDIT#2]:根据我的进一步研究,这似乎是新 Native Client 的定义和接受的行为。请参阅更严格的 SQL_C_TYPE _TIMESTAMP 和 DBTYPE_DBTIMESTAMP 参数验证以供参考。但是如果没有任何文档说明如何正确使用 datetime2,微软就无法认真对待这一变化。他们真的需要开发人员自己在将 DBTIMESTAMP 插入数据库之前对其进行四舍五入吗?在某些情况下,由于某些浮点精度错误,舍入甚至不起作用。以上面的示例时间戳为例,您将看到典型的 .9999 精度错误。有人应该如何让这种奇怪的行为起作用?使用此错误消息,您甚至无法在不使用 SQL 函数的情况下将当前时间戳保存到数据库now()
因为您通常会在这些溢出中运行。
datetime - MSSQL 查询不再适用于 Windows 10 客户端:将 varchar 数据类型转换为 datetime 数据类型导致值超出范围
我们在 WinForms 程序中使用以下 SQL 查询很长时间没有问题,直到一些最终用户升级到 Windows 10。
他们突然得到异常:“ERROR [22007] [Microsoft][SQL Server Native Client 11.0][SQL Server]varchar 数据类型到 datetime 数据类型的转换导致值超出范围。”
这个错误之前已经在这里发布过,但我没有找到任何与 Windows 10 升级相关的帖子。
该查询针对 SQL Server 2012,使用 Native Client 11。它适用于 Windows 7 和 8,但在 Windows 10 中引发异常:
唯一使用 DateTime 字段的地方是在 Where 子句中,并且该查询对具有 Windows 8 客户端的同一个数据库工作正常。两个客户端都运行 Einglish Windows 版本。另一个有趣的观察是,从 Windows 10 机器上的 Microsoft SQL Management Studio 接受查询。但不是通过本机客户端。过滤器中使用的日期是通过 GUI 在我们的程序中创建的。
是否有人在 Windows 10 上使用 Native Client 时遇到过奇怪的事情,或者是否有人对如何解决此问题提出建议?