标签: sql-server-native-client

使用SQL Native Client无法从Classic ASP连接到SQL Server 2008 R2(Windows 7 - IIS7)

当我Provider=SQLOLEDB在连接字符串中使用时,我能够连接到SQL Server 2008 R2 .但是当我Provider=SQLNCLI在连接字符串中使用时,我无法连接.

ADODB.Connection错误'800a0e7a'

无法找到提供商.它可能没有正确安装.

/test.asp,第7行

编写的代码test.asp如下

<%
    Set cn = Server.CreateObject("ADODB.Connection")

    'Doesn't work
    cn.Open "Provider=SQLNCLI;Server=remoteServer\SQL2008R2;Database=DB;UID=MyUser;PWD=pa55word;"  

    'Works Perfectly
    'cn.Open "Provider=SQLOLEDB;Server=remoteServer\SQL2008R2;Database=DB;UID=MyUser;PWD=pa55word;" 

    cn.CommandTimeout = 900
    cn.Close
    Response.write("dfjslkfsl")
%>
Run Code Online (Sandbox Code Playgroud)

我正在尝试连接的SQL Server(来自我在Windows 7上的IIS 7中的经典ASP页面)位于我使用VPN连接的不同网络中的不同服务器上.

我通过从ODBC数据源管理员创建到所述Sql server 2008 R2(通过VPN连接)的sql本机客户端系统DSN连接来测试sql本机客户端.它成功连接.

这些快照来自我的Windows 7系统 Appwiz.cpl snap

IIS 7功能

在此输入图像描述

  • Windows 7的
  • IIS 7
  • 经典ASP页面(.asp)

connection iis-7 asp-classic sql-server-2008 sql-server-native-client

11
推荐指数
1
解决办法
3万
查看次数

使用 Native Client 10 将 TDateTime 字段插入 SQL 2008 DB

我们有一个用 Delphi 2007 编写的遗留应用程序,并且仍在使用 BDE(是的,它需要切换到 ADO,但有超过 500K 行,这是一项艰巨的工作)。它使用 SQL SERVER ODBC 连接连接到 SQL Server 2008 DB。我正在尝试切换到 SQL Server Native Client 10.0,并且遇到了一个有趣的问题。当尝试将记录插入包含日期时间字段的表时,我们收到以下错误:

Project DateTimeParamTest.exe raised exception class EDBEngineError with message 'General SQL error.
[Microsoft][SQL Server Native Client 10.0]Datetime field overflow. Fractional second precision exceeds the scale specified in
the parameter binding.'.
Run Code Online (Sandbox Code Playgroud)

在进行一些研究时,我看到了有关 TParameter 对象的 NumericScale、Precision 和 Size 参数的评论。TADOQuery会自动将参数分别设置为3、23、16,插入没有问题。如果我在 TQuery 对象上将参数设置为相同,则会收到与上面相同的错误。

有谁有这方面的经验并知道简单的解决方法吗?我为任何想尝试的人创建了以下示例代码。您只需要更改连接和 SQL 代码。

日期时间参数测试_Main.dfm:

object Form10: TForm10
  Left = 0
  Top = 0
  Caption = 'Form10'
  ClientHeight = 111
  ClientWidth = …
Run Code Online (Sandbox Code Playgroud)

delphi bde delphi-2007 sql-server-2008 sql-server-native-client

5
推荐指数
1
解决办法
2964
查看次数

Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:通信链接失败

下面,您会注意到我尝试从 Microsoft SQL Server 2008 的 64 位 Program Files 文件夹中调用一些 Windows 命令提示符命令

C:\Program Files\Microsoft SQL Server\100\Tools\Binn>SQLCMD -S "SQLI2B2" -d
 "I2B2_CRC-DEV" -i "C:\SVN\ONT\SQL SERVER\DX_SQLSERVER.sql" -E
Run Code Online (Sandbox Code Playgroud)

HResult 0x2746,级别 16,状态 1 TCP 提供程序:现有连接被远程主机强制关闭。

Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:通信链接失败。

c:\Program Files\Microsoft SQL Server\100\Tools\Binn>

现在,我连接到的数据库(服务器)是 SQL Server 2008。“Microsoft SQL Server”文件夹下有几个目录。90、100、110 和 120。只有 100 和 110 拥有该.\Tools\Binn\SQLCMD.EXE文件。我注意到 中的以下驱动程序\\Control Panel\All Control Panel Items\Administrative Tools\Data Sources (ODBC)\Drivers\,所以我不知道客户端驱动程序是否适合我的服务器版本。

Name                            Version
SQL Server                      6.01.7601.17514
SQL Server Native Client 10.0   2009.100.1600.01
SQL Server Native Client …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlcmd sql-server-2008 sql-server-native-client

5
推荐指数
1
解决办法
9597
查看次数

为什么 SQL Server 不自动将 DATE 向上转换为 DATETIME 以进行比较?

我喜欢 SQL Server 2008 中的新 DATE 数据类型,但是当我将 DATE 字段与链接服务器(在本例中为 SQL 2005)上的 DATETIME 字段进行比较时,如下所示:

DECLARE @MyDate DATE
SET @MyDate = CONVERT(DATE, GETDATE())

SELECT *
  FROM MySQL2005LinkedServer.SomeDB.dbo.SomeTable
 WHERE SomeDatetimeField < @MyDate
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

OLE DB provider "SQLNCLI10" returned message "Unspecified error".
OLE DB provider "SQLNCLI10" returned message "The scale is invalid.".
Run Code Online (Sandbox Code Playgroud)

“比例无效”显然是因为本机客户端将 DATE 数据类型传递回链接服务器,而且由于它是 SQL 2005,它不知道如何处理它。对 2008 年服务器运行相同的查询效果很好 - SQL Server 能够毫无问题地比较 DATE 和 DATETIME 数据类型。

这是我的问题 - Native Client 不会自动将“2009-11-09”的 DATE 值转换为“2009-11-09 00:00:00.000”的 DATETIME 以便之前版本的SQL Server 不会被它呛到吗?

sql-server datetime date sql-server-2008 sql-server-native-client

4
推荐指数
1
解决办法
4145
查看次数

尝试发布或编辑时,其他用户更改了记录

正在使用Delphi 7Sql Server express 2008 R2开发应用程序,使用BDE通过ODBC连接Sql Server,并使用SQL Native Client作为驱动程序.

在某些特定形式的表组件加薪EDBEngineError"记录已被其他用户更改",我只是尝试添加数据,发生同样的问题时table.cancel,table.post,table.edit.....

几天前我将驱动程序从SQL Server更改为Sql Native Client因为sql server有"连接有另一个hstmt的结果集"的问题,所以我把它改为SQL Native客户端,形成这个我遇到了'记录已经由antoher用户'错误更改.

请任何一个帮助

sql-server delphi odbc bde sql-server-native-client

4
推荐指数
1
解决办法
2399
查看次数

如何在 ODBC 本机客户端中获取 SQL Server DateTime 字段

我有 SQL Server 表:

CREATE TABLE [dbo].[Table1](
    [rec_id] [int] IDENTITY(1,1) NOT NULL,
    [id] [int] NOT NULL,
    [date] [datetime] NOT NULL,
    [ps] [varchar](200) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我通过代码获取数据:

status = SQLExecDirect(statement, (SQLWCHAR*)TEXT("SELECT * FROM [DBNAME].[dbo].[Table1]"), SQL_NTS);
cout << "SQLExecDirect returned " << status << "\r\n";
    if (status == SQL_SUCCESS_WITH_INFO || status == SQL_SUCCESS)
    {
        int rec_id;
        int id;
        char date[64];
        char ps[201] = { 0 };
        while (SQLFetch(statement) == SQL_SUCCESS)
        {
            SQLGetData(statement, 1, SQL_C_ULONG, &rec_id, 0, NULL);
            SQLGetData(statement, 2, SQL_C_ULONG, &id, …
Run Code Online (Sandbox Code Playgroud)

c++ sql-server datetime odbc sql-server-native-client

4
推荐指数
1
解决办法
2935
查看次数

有关如何从2层应用程序连接到SQL Server数据库的最佳实践吗?

我正在用wpf开发一个桌面客户端应用程序,我想把我目前在Access中的数据库放在我们的SQL Server实例上.我认为使用Windows身份验证不是一个好主意,因为每个用户都应该添加到sql server并获得必要的权限.因此,另一个选择是在SQL Server中为该特定应用程序创建用户.我还读到你可以让客户端应用程序通过SQL Server Native Client连接到数据库,但我需要在每台PC上安装它.所以我想我的问题是,这样做的正确方法是什么?

.net sql-server 2-tier sql-server-native-client

1
推荐指数
1
解决办法
316
查看次数

使用SQL Native Client透明客户端重定向和镜像的方法是什么?

我从未使用镜像,群集或其他故障转移技术.但我正在调查调整我的DAL是多么容易,以便SQLNativeClient透明客户端重定向对我们有效,如果我的客户决定使用带或不带见证的镜像.

有人可以解释一个客户端应用程序的实用过程,该应用程序可能位于数百个桌面上,这些桌面将连接到一个镜像的实例并可能会故障转移?

我正在考虑为这100台台式机提供零维护方法.我目前的想法是,如果发现过程不是自动的,我将不得不有一个互联网/内联网文件/服务,描述哪个服务器是主体,哪个是镜像,哪些应用程序可以读取.

背景:我已经阅读了多篇文章,涉及使用SQL_COPT_SS_FAILOVER_PARTNER连接属性,并且您必须在连接字符串中指定镜像到alllow SQLNCLI透明客户端重定向,但这一切似乎都有点回到前面.为什么程序员或最终用户必须参与其中?网络基础设施可能会改变.

我希望尝试连接主要的OR镜像或见证会将我重新路由到正确的校长,然后"知道"镜子是什么.我了解证人可以管理多个数据库镜像会话,因此可能需要其他内容.

那么,我如何发现镜像或主服务器开始?我不希望用户输入它,因为它可能会改变.我是否必须先连接到正在运行的主体,从主体中提取已注册的镜像,然后使用这些参数重新连接,或者我可以稍后设置连接attirbute?

我期待一些启蒙!

sql-server odbc connection-string mirroring sql-server-native-client

1
推荐指数
1
解决办法
700
查看次数