SQL_Server_ODBC数据源连接失败问题总结范文大全

时间:2019-05-12 04:33:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《SQL_Server_ODBC数据源连接失败问题总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《SQL_Server_ODBC数据源连接失败问题总结》。

第一篇:SQL_Server_ODBC数据源连接失败问题总结

SQL Server ODBC数据源连接失败问题总结

本文针对SQL Server 不存在或是访问被拒绝、[Microsoft][ODBC Sql Server Driver]无效的连接、SQLSERVER错误:18452三种常见的连接错误问题,提出了解决的方法,并且亲身实践。在提出问题之前,首先要检查防火墙和杀毒软件是否关闭,接着,在建立连接的时候,要保证SQL Server 服务器是打开的。以上都做到后,请参考下文的出错情况以及解决方法。

一、错误1:SQL Server 不存在或是访问被拒绝

SQLState:01000 SQL Server 错误: 64 [Microsoft][ODBC SQL Server Driver][DBNETLIB] ConnectionOpen(Connect())连接失败

SQLState:08001 SQL Server 错误: 17 [Microsoft][ODBC SQL Server Driver][DBNETLIB] SQL Server 不存在或是访问被拒绝

检查1433端口是否打开

没有找到1433端口

说明1433端口没有打开。

打开1433端口的方法:

1.针对我安装的系统SP3,安装的SQL2005默认TCP/IP的状态是禁止的,因此:

选择SQL Server Configuration Manager,然后分别打开SQL Server 2005 Services和SQL Server 2005 Client Configuration,并把TCP/IP和Nameed Pipes的状态设置为Enabled;

2.如果不行,就需要更新系统

更新后,一定要重启电脑。

.重新检查1433端口,如下图所示,发现1433已经打开。

二、错误2:[Microsoft][ODBC Sql Server Driver]无效的连接

再次打开ODBC,进行到第二步时,又出错了,不过这次的错误如图所示,显示的无效的连接,和之前的错误不同。连接失败

Sqlstate :'01000' Sql server错误:14

[Microsoft][ODBC Sql Server Driver][DBNETLIB] connectionOpen(Invalid Instance())

连接失败:

Sql State:'08001' Sql Server错误:14

[Microsoft][ODBC Sql Server Driver]无效的连接

原因在于你的服务器没有启动,只要启动服务器即可

解决的方法如下:

1.选择下图的SQL Server Surface Area Configuration

接着如下图所示,依次点击Surface Area Configuration for Services and Connections和Surface Area Configuration for Features

如下面两个图所示,必须保证startup type为Automic,以及service status为Running(即start按钮键为灰色)。

三、错误3:SQLSERVER错误:18452

设置完毕后,再次打开ODBC,进行到第二步时,又出错了,不过这次的错误又和之前的错误不同,SQLSTATE:28000

SQLSERVER错误:18452

[MICROSOFT][ODBC SQLSERVER DRIVER][SQL SERVER]用户‘sa’ 登录失败

原因:未与信任SQL Server连接相关联

该错误产生的原因是由于SQL Server使用了“仅

Windows”的身份验证方式,因此用户无法使用SQL Server的登录帐户(例如

sa)进行连接。

SQL 服务器已配置为在 “ Windows 身份验证模式(Windows 身份验证)” 操作和不允许使用 SQL 帐户。

解决方法如下:

1、设置允许SQL Server身份登录 操作步骤:

第一步:在“Microsoft SQL Server Management Stdio”中,展开“SQL Server组”,鼠标右键点击SQL Server服务器的名称。

第二步:选择“属性”

第三步:再选择“安全性”选项卡

第四步:在“身份验证”下,选择“SQL Server和Windows身份验证模式” 第五步:确定,并重新启动SQL Server服务。

2、如果还是没解决,可以检查SA用户是否被打开: 第一步:右键SA用户,打开属性。

第二步:选择“状态”选项卡,勾选登陆中的启用。

SA没有被启用,在数据库刚开始使用的时候很容易出现,安装的SQLServer,SA用户默认是关闭的,往往不被人知道。

到此,创建到SQL Server 2005的数据源成功!附图如下

第二篇:SQLServe数据源连接失败问题总结

SQL Server ODBC数据源连接失败问题总结

本文针对SQL Server 不存在或是访问被拒绝、[Microsoft][ODBC Sql Server Driver]无效的连接、SQLSERVER错误:18452三种常见的连接错误问题,提出了解决的方法,并且亲身实践。

在提出问题之前,首先要检查防火墙和杀毒软件是否关闭,接着,在建立连接的时候,要保证SQL Server 服务器是打开的。以上都做到后,请参考下文的出错情况以及解决方法。

一、错误1:SQL Server 不存在或是访问被拒绝

SQLState:01000 SQL Server 错误: 64 [Microsoft][ODBC SQL Server Driver][DBNETLIB] ConnectionOpen(Connect())连接失败

SQLState:08001 SQL Server 错误: 17 [Microsoft][ODBC SQL Server Driver][DBNETLIB] SQL Server 不存在或是访问被拒绝

检查1433端口是否打开

没有找到1433端口

说明1433端口没有打开。

打开1433端口的方法:

1.针对我安装的系统SP3,安装的SQL2005默认TCP/IP的状态是禁止的,因此:

选择SQL Server Configuration Manager,然后分别打开SQL Server 2005 Services和SQL Server 2005 Client Configuration,并把TCP/IP和Nameed Pipes的状态设置为Enabled;

2.如果不行,就需要更新系统

更新后,一定要重启电脑。

.重新检查1433端口,如下图所示,发现1433已经打开。

二、错误2:[Microsoft][ODBC Sql Server Driver]无效的连接

再次打开ODBC,进行到第二步时,又出错了,不过这次的错误如图所示,显示的无效的连接,和之前的错误不同。连接失败

Sqlstate :'01000' Sql server错误:14

[Microsoft][ODBC Sql Server Driver][DBNETLIB] connectionOpen(Invalid Instance())

连接失败:

Sql State:'08001' Sql Server错误:14

[Microsoft][ODBC Sql Server Driver]无效的连接

原因在于你的服务器没有启动,只要启动服务器即可

解决的方法如下:

1.选择下图的SQL Server Surface Area Configuration

接着如下图所示,依次点击Surface Area Configuration for Services and Connections和Surface Area Configuration for Features

如下面两个图所示,必须保证startup type为Automic,以及service status为Running(即start按钮键为灰色)。

三、错误3:SQLSERVER错误:18452

设置完毕后,再次打开ODBC,进行到第二步时,又出错了,不过这次的错误又和之前的错误不同,SQLSTATE:28000

SQLSERVER错误:18452

[MICROSOFT][ODBC SQLSERVER DRIVER][SQL SERVER]用户‘sa’ 登录失败

原因:未与信任SQL Server连接相关联

该错误产生的原因是由于SQL Server使用了“仅

Windows”的身份验证方式,因此用户无法使用SQL Server的登录帐户(例如

sa)进行连接。

SQL 服务器已配置为在 “ Windows 身份验证模式(Windows 身份验证)” 操作和不允许使用 SQL 帐户。

解决方法如下:

1、设置允许SQL Server身份登录 操作步骤:

第一步:在“Microsoft SQL Server Management Stdio”中,展开“SQL Server组”,鼠标右键点击SQL Server服务器的名称。

第二步:选择“属性”

第三步:再选择“安全性”选项卡

第四步:在“身份验证”下,选择“SQL Server和Windows身份验证模式” 第五步:确定,并重新启动SQL Server服务。

2、如果还是没解决,可以检查SA用户是否被打开: 第一步:右键SA用户,打开属性。

第二步:选择“状态”选项卡,勾选登陆中的启用。

SA没有被启用,在数据库刚开始使用的时候很容易出现,安装的SQLServer,SA用户默认是关闭的,往往不被人知道。

当然可以新建一个用户,限于篇幅原因,读者参考下面的资料 http://apps.hi.baidu.com/share/detail/32872545

到此,创建到SQL Server 2005的数据源成功!附图如下

第三篇:小结SQLServer连接失败错误及解决

小结SQL Server连接失败错误及解决

在使用 SQL Server 的过程中,用户遇到的最多的问题莫过于连接失败了。一般而言,有以下两种连接 SQL Server 的方式,一是利用 SQL Server 自带的客户端工具,如企业管理器、查询分析器、事务探查器等;二是利用用户自己开发的客户端程序,如ASP 脚本、VB程序等,客户端程序中又是利用 ODBC 或者 OLE DB 等连接 SQL Server。下面,我们将就这两种连接方式,具体谈谈如何来解决连接失败的问题。

一、客户端工具连接失败

在使用 SQL Server 自带的客户端工具(以企业管理器为例)连接 SQL Server时,最常见的错误有如下一些:

1、SQL Server 不存在或访问被拒绝

ConnectionOpen(Connect())

2、用户'sa'登录失败。原因:未与信任 SQL Server 连接相关联。

3、超时已过期。

下面我们依次介绍如何来解决这三个最常见的连接错误。

第一个错误“SQL Server 不存在或访问被拒绝”通常是最复杂的,错误发生的原因比较多,需要检查的方面也比较多。一般说来,有以下几种可能性:

1、SQL Server名称或IP地址拼写有误;

2、服务器端网络配置有误;

3、客户端网络配置有误。

要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因。

首先,检查网络物理连接:

ping <服务器IP地址>

或者

ping <服务器名称>

如果 ping <服务器IP地址> 失败,说明物理连接有问题,这时候要检查硬件设备,如网卡、HUB、路由器等。还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如 ISA Server。防火墙软件可能会屏蔽对 ping、telnet 等的响应,因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口。

如果ping <服务器IP地址> 成功而 ping <服务器名称> 失败,则说明名字解析有问题,这时候要检查 DNS 服务是否正常。有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,具体的方法是:

1、使用记事本打开HOSTS文件(一般情况下位于C:WINNTsystem32driversetc).2、添加一条IP地址与服务器名称的对应记录,如:

172.168.10.24 myserver

也可以在 SQL Server 的客户端网络实用工具里面进行配置,后面会有详细说明。

其次,使用 telnet 命令检查SQL Server服务器工作状态:

telnet <服务器IP地址> 1433

如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接;如果命令返回“无法打开连接”的错误信息,则说明服务器端没有启动 SQL Server 服务,也可能服务器端没启用 TCP/IP 协议,或者服务器端没有在 SQL Server 默认的端口1433上监听。

接着,我们要到服务器上检查服务器端的网络配置,检查是否启用了命名管道,是否启用了 TCP/IP 协议等等。我们可以利用 SQL Server 自带的服务器网络使用工具来进行检查。

点击:程序-> Microsoft SQL Server-> 服务器网络使用工具,打开该工具后看到的画面如下图所示:

从这里我们可以看到服务器启用了哪些协议。一般而言,我们启用命名管道以及 TCP/IP 协议。

点中 TCP/IP 协议,选择“属性”,我们可以来检查 SQK Server 服务默认端口的设置,如下图所示:

一般而言,我们使用 SQL Server 默认的1433端口。如果选中“隐藏服务器”,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接。

检查完了服务器端的网络配置,接下来我们要到客户端检查客户端的网络配置。我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查,所不同的是这次是在客户端来运行这个工具。

点击:程序-> Microsoft SQL Server-> 客户端网络使用工具,打开该工具后看到的画面如下图所示:

从这里我们可以看到客户端启用了哪些协议。一般而言,我们同样需要启用命名管道以及 TCP/IP 协议。

点击 TCP/IP 协议,选择“属性”,可以检查客户端默认连接端口的设置,如下图所示。

该端口必须与服务器一致。

单击“别名”选项卡,还可以为服务器配置别名。服务器的别名是用来连接的名称,连接参数中的服务器是真正的服务器名称,两者可以相同或不同。如下图中,我们可以使用myserver来代替真正的服务器名称sql2kcn-02,并且使用网络库 Named Pipes。别名的设置与使用HOSTS文件有相似之处。

通过以上几个方面的检查,错误 1 发生的原因基本上可以被排除。下面我们再详细描述如何来解决错误 2。

当用户尝试在查询分析器里面使用sa来连接SQL Server,或者在企业管理器里面使用sa来新建一个SQL Server注册时,经常会遇到如图 2 所示的错误信息。该错误产生的原因是由于SQL Server使用了“仅 Windows”的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa)进行连接。解决方法如下所示:

1、在服务器端使用企业管理器,并且选择“使用 Windows 身份验证”连接上 SQL Server;

2、展开“SQL Server组”,鼠标右键点击SQL Server服务器的名称,选择“属性”,再选择“安全性”选项卡;

3、在“身份验证”下,选择“SQL Server和 Windows ”。

4、重新启动SQL Server服务。

在以上解决方法中,如果在第 1 步中使用“使用 Windows 身份验证”连接 SQL Server 失败,那么我们将遇到一个两难的境地:首先,服务器只允许了 Windows 的身份验证;其次,即使使用了 Windows 身份验证仍然无法连接上服务器。这种情形被形象地称之为“自己把自己锁在了门外”,因为无论用何种方式,用户均无法使用进行连接。实际上,我们可以通过修改一个注册表键值来将身份验证方式改为 SQL Server 和 Windows 混合验证,步骤如下所示:

1、点击“开始”-“运行”,输入regedit,回车进入注册表编辑器;

2、依次展开注册表项,浏览到以下注册表键:

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServer]

3、在屏幕右方找到名称“LoginMode”,双击编辑双字节值;

4、将原值从1改为2,点击“确定”;

5、关闭注册表编辑器;

6、重新启动SQL Server服务。

此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册,但是仍然无法使用Windows身份验证模式来连接SQL Server。这是因为在 SQL Server 中有两个缺省的登录帐户:BUILTINAdministrators 以及 <机器名>Administrator 被删除。要恢复这两个帐户,可以使用以下的方法:

1、打开企业管理器,展开服务器组,然后展开服务器;

2、展开“安全性”,右击“登录”,然后单击“新建登录”;

3、在“名称”框中,输入 BUILTINAdministrators;

4、在“服务器角色”选项卡中,选择“System Administrators” ;

5、点击“确定”退出;

6、使用同样方法添加 <机器名>Administrator 登录。

以下注册表键

HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerLoginMode 的值决定了SQL Server将采取何种身份验证模式。该值为1,表示使用Windows 身份验证模式;该值为2,表示使用混合模式(Windows 身份验证和 SQL Server 身份验证)。

看完如何解决前两个错误的方法之后,让我们来看一下如图 3 所示的第三个错误。

如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,不过是由于连接的时间大于允许的时间而导致出错。这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,并且是慢速连接时,有可能会导致以上的超时错误。有些情况下,由于局域网的网络问题,也会导致这样的错误。

要解决这样的错误,可以修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因)。具体步骤为:

1、在企业管理器中,选择菜单上的“工具”,再选择“选项”;

2、在弹出的“SQL Server企业管理器属性”窗口中,点击“高级”选项卡;

3、在“连接设置”下的“登录超时(秒)”右边的框中输入一个比较大的数字,如 20。

查询分析器中也可以在同样位置进行设置。

二、应用程序连接失败

以上的三种错误信息都是发生在 SQL Server 自带的客户端工具中,在应用程序中我们也会遇到类似的错误信息,例如:

Microsoft OLE DB Provider for SQL Server(0x80004005)[DBNETLIB][ConnectionOpen(Connect()).]Specified SQL server not found.Microsoft OLE DB Provider for SQL Server(0x80004005)用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'.[Microsoft][ODBC SQL Server Driver]超时已过期.首先,让我们来详细看以下的示意图来了解一下使用 ODBC 和使用 OLE DB 连接 SQL Server 有什么不同之处。

从上图中,我们可以看出在实际使用中,应用程序创建和使用各种 ADO 对象,ADO 对象框架调用享用的 OLE DB 提供者。为了访问 SQL Server 数据库,OLE DB 提供了两种不同的方法:用于 SQL Server 的 OLE DB 提供者以及用于 ODBC 的 OLE DB 提供者。这两种不同的方法对应于两种不同的连接字符串,标准的连接字符串写法如下所示:

1、使用用于 SQL Server 的 OLE DB 提供者:

使用 SQL Server 身份验证:

oConn.Open “Provider=sqloledb;” & _ “Data Source=myServerName;” & _ “Initial Catalog=myDatabaseName;” & _ “User Id=myUsername;” & _ “Password=myPassword”

使用 Windows 身份验证(信任连接): oConn.Open “Provider=sqloledb;” & _ “Data Source=myServerName;” & _ “Initial Catalog=myDatabaseName;” & _ “Integrated Security=SSPI”

2、使用用于 ODBC 的 OLE DB 提供者(不使用 ODBC 数据源):

使用 SQL Server 身份验证:

oConn.Open “Driver={SQL Server};” & _ “Server=MyServerName;” & _ “Database=myDatabaseName;” & _ “Uid=myUsername;” & _ “Pwd=myPassword”

使用 Windows 身份验证(信任连接): oConn.Open “Driver={SQL Server};” & _ “Server=MyServerName;” & _ “Database=myDatabaseName;” & _ “Trusted_Connection=yes”

3、使用用于 ODBC 的 OLE DB 提供者(使用 ODBC 数据源): oConn.Open “DSN=mySystemDSN;” & _ “Uid=myUsername;” & _ “Pwd=myPassword”

如果遇到连接失败的情况,我们只要按照一中所示的方法,结合程序中的连接字符串进行检查,基本都能得到解决。另外,还有以下几个要注意的地方:

1、配置 ODBC 数据源时,点击“客户端”配置选项可以让我们指定连接使用的网络库、端口号等属性,如下图所示:

2、如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接。例如:

<% Set Conn = Server.CreateObject(“ADODB.Connection”)

DSNtest=“DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase” Conn.Properties(“Connect Timeout”)= 15 '以秒为单位

Conn.open DSNtest

%>

3、如果遇到查询超时的错误,我们可以在程序中修改 Recordset 对象的超时设置,再打开结果集。例如:

Dim cn As New ADODB.Connection Dim rs As ADODB.Recordset

...cmd1 = txtQuery.Text Set rs = New ADODB.Recordset rs.Properties(“Command Time Out”)= 300 '同样以秒为单位,如果设置为 0 表示无限制

rs.Open cmd1, cn rs.MoveFirst

...三、小结

本文针对大部分用户在使用 SQL Server 过程中常见的连接失败的错误,重点讨论了在使用 SQL Server 客户端工具以及用户开发的应用程序两种情况下,如何诊断并解决连接失败的错误。看过本文以后,相信每一个读者都会对 SQL Server 的连接工作原理、身份验证方式以及应用程序开发等有一个较为全面而深入的连接。本文中所有的测试或者示例均在 Windows 2000 Advanced Server + SQL Server 2000 企业版上通过。

第四篇:JSP连接SQL SERVER问题总结

首先是SQL 2000数据库的安装问题,在此我主要讲些关于SQL 2000的版本与操作系统的兼容性问题:SQL 2000总共有7个不同版本,适应不同等级用户的需求。

我试了一下,在XP系统下只有“个人开发版”能正常安装而不出现错误,所以大家在安装时要注意,具体安装时的配置参照相关说明就可以了。

下面说明如何连接到SQL 2000数据库,首先当然是要下载JDBC驱动程序,最好去微软官方网站下载,然后将下载到的三个JAR包放入你的WEB应用的WEB-INF/lib/下。接下来编写程序进行测试:

/*********************************************** /* /*DBTest.java /* /******************************************* */

import java.sql.*;

public class DBTest {

Connection con;

Statement sta;

ResultSet rs;

String driver;

String url;

String user;

String pwd;

public DBTest()

{

driver = “com.microsoft.jdbc.sqlserver.SQLServerDriver”;;

url

= “jdbc:microsoft:sqlserver:

//localhost:1433;DatabaseName =test”;

//test为数据库名

user

= “sa”;

pwd

= “sa”;

//请更改为你相应的用户和密码

init();

}

public void init()

{

try{

Class.forName(driver);

System.out.println(“driver is ok”);

con = DriverManager.getConnection(url,user,pwd);

System.out.println(“conection is ok”);

sta = con.createStatement();

rs = sta.executeQuery

(“select * from room”);

while(rs.next())

System.out.println

(rs.getInt(“roomNum”));

}catch(Exception e)

{

e.printStackTrace();

}

}

public static void main(String args[])

//自己替换[]

{

new DBTest();

} }

按道理讲,上边这段代码应该没错,可首先我们来看一下,如果sqlser服务器没有升级到sp3(在使用jdbc时,如果系统是xp或者2003务必要把sqlserver 升级到sp3,往上到处都有下的),我们看看运行结果:

driver is ok java.sql.SQLException: [Microsoft] [SQLServer 2000 Driver for JDBC] Error establis hing socket.at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSConnection.(Unknown Source)

at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Sou rce)

at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown S ource)

at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)

at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)

at java.sql.DriverManager.getConnection(DriverManager.java:523)

at java.sql.DriverManager.getConnection(DriverManager.java:171)

at DbTest.init(DbTest.java:32)

at DbTest.(DbTest.java:25)

at DbTest.main(DbTest.java:46)Press any key to continue...出现上边错误的主要原因是默认的数据库服务器端口 1433没有打开,无法直接连接。如果升级到sp3则这个问题可以结决,我们再来看看升级之后,程序运行的结果:

driver is ok conection is ok java.sql.SQLException:

[Microsoft][SQLServer 2000 Driver for JDBC] [SQLServer]对

象名 ’room’ 无效。

at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Sour ce)

at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState

(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.postImplExecu te(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal

(Unknown So urce)

at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)

at DbTest.init(DbTest.java:35)

at DbTest.(DbTest.java:25)

at DbTest.main(DbTest.java:46)Press any key to continue...在这儿,用户已经登陆上去,但是却不能访问里边的数据表,出现这个问题的原因在于sa用户为系统用户,它虽然能够登陆数据库,但是test数据库里边却没有这个用户的访问权限,所以,我们现在为这个数据库重新建立一个用户share,建立过程如下:

在test数据库中选重用户---〉新建用户--〉名称选择(这一步中有两个关键点:身份验证选sql身份验证,默认数据库选test)-〉建立新教色share,此时更改程序,将用户登陆名和密码修改一下,重新运行程序:

driver is ok conection is ok 1001 1002 1003 1004 1005 1006 Press any key to continue...这次顺利通过测试

其实这些小问题花了我一个晚上才解决,真是浪费时间,所以写下来希望能使遇到类似问题的朋友不要重蹈覆辙,在此提醒大家遇到问题时多上网查查,多在论坛里问问,这样你学到的会更多,更节省时间,更有效率。

总结:Sqlserve 和JDBC 的融合问题,关键涉及到sp3补丁(端口开放)还有用户问题,解决这两个问题之后,剩余的便是Sqlserver 操作问题了,还有一点在远程操作的时候,要把Sqlserver 组设置一下,在安全性里边亦将身份验证更改为Sqlserve 验证即可。

------------------------------------------------windows xp sp2下jsp连接sql server 2000

注意:由于博客的文本编辑带有html代码解释功能,本文中对代码做了一定的改动,把所有的<改成了#,所有的>改成了$,如果需要用代码可以用记事本的“替换”功能替换回来即可。基本信息:windows xp sp2、Tomcat5.0、J2SDK1.5、Sql server 2000开发版

一、安装JDK 这个没有什么好说的,需要注意的是JDK1.5和以前的版本有个不同点,它默认的安装目录在C:Program FilesJava目录下,由于路径名里有空格,所以可能会给以后的命令行执行有一定的影响,并且和以往的习惯也有些不同,所以建议安装到C盘目录下就可以了。我的路径是C:jdk1.5

二、安装Tomcat 一路NEXT下来就可以了,注意有会有一个设置用户名密码的提示。我是安装在C:Tomcat 5.0了。

三、安装SQL Server2000 注意在windos xp下只能装两个版本,一个是开发版,另一个好像是个人版,记不得了。装的时候也基本上是一路NEXT下来,不过有一个地方要选择是采用Windows NT验证方式,一种是采用混合验证模式,为了安全,建议采用后者。并且要给超级管理员sa设上密码。最重要的是,不要忘了给SQL Server 2000打上补丁。由于sql server 2000存在漏洞,我们宿舍楼的局域网就因为中毒机器太多而造成网络拥塞。在windows xp中就把1433端口屏蔽了。要启用这个端口,要安装一个sql server 2000的sp3补丁。

四、设置环境变量

path路径:在系统变量的path前面加上C:Tomcat 5.0bin;C:jdk1.5bin;classpath路径.;C:jdk1.5libdt.jar;C:jdk1.5libtools.jar;C:jdk1.5librt.jar;C:jdk1.5;C:Tomcat 5.0commonlib,其中的.代表当前路径,其它的可以简单的设为C:jdk1.5lib,但是最好还是一个一个列出来。注意这里你如果在连接数据库时用到的是JDBC-ODBC桥接的方式的话,还要把桥接的驱动的路径加在classpath里面。有一个细节,好像在jdk1.5中,这个驱动不在C:jdk1.5lib下,而是在C:jdk1.5jrelib的rt.jar中,可以适当的设置一下或者把这个文件拷贝到classpath能到达的地方。

java_home路径:C:jdk1.5,即是jdk的安装目录。

tomcat_home路径:C:Tomcat 5.0,即是tomcat的安装目录。catalina_home路径:C:Tomcat 5.0 catalina_base路径:C:Tomcat 5.0,这两个环境变量的作用是可以通过命令行方式来启动和关闭tomcat,方法是打开命令行提示窗口,键入startup就可以启动,键入shutdown就可以关闭了。注意不要强行关闭tomcat,因为既然给了一个关闭的方式必然有它的道理,为了安全起见,还是用shutdown来关闭较为合适。当然不设置这两个环境变量也可以,只不要启动时用鼠标来从开始菜单启动。

五、建立数据库表

建立一个数据库testdb,在它里面建立一个表users。里面有两列,name和password,数据类型都取默认的char类型就行了。注意在SQL SERVER中表的名字不能为user。否则会出现错误。

六、配置数据DSN 打开“控制面板->性能与维护->管理工具->数据源”,点击“系统DSN”,点击“添加”,数据驱动选择“SQL SERVER”,点击“完成”,在弹出的对话框的“名称”里填入此DSN的名称,比如test。“描述”可以不填,“服务器”选择本地,即(local)。点击“下一步”,将弹出一个新的对话框。选择“使用sql server验证”,在下方填入用户名和密码。点击“下一步”,在新弹出的对话框的上方,选中“更改默认的数据库为”,在下侧的下拉菜单里选择你要映射的数据库,这里我们选择testdb。点击“下一步”,再点击“完成”。在新的对话框下方有个“测试数据源”的按钮,点击它,如果出现“测试成功”则表示建立DSN成功。点击完成即可。注意以后在程序中访问数据库是根据这里的系统DSN的名称来访问数据库的,而非真实的数据库名,在这里即是通过test而非testdb。

七、写测试网页文件

这里我们写一个简单的功能,有两个页面,第一个页面adduser.htm负责与用户进行交互,它可以让用户输入用户名和密码,并且提交它,但是它自己不处理,而是由第二个页面文件处理。第二个页面为jdbc.jsp,它接受第一个页面传递过来的参数,然后把它插入到users表中,然后把表中所有的用户都检索出来并且显示它。把这两个文件放在一个文件夹jdbc中,在jdbc文件夹中新建一个文件夹,名称为WEB-INF,在它里面建一个web.xml文件,然后把jdbc文件夹放到tomcat的工作目录C:Tomcat 5.0webapps中。web.xml内容

#?xml version=“1.0” encoding=“ISO-8859-1”?$ #!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”$ #web-app$ #display-name$My Web Application#/display-name$ #description$ A application for test.#/description$ #/web-app$ adduser.htm文件内容:

#html$ #head$ #title$Add User#/title$ #/head$ #body$ #form method=“POST” action=“jdbc.jsp”$ #p align=“center”$姓名

#input type=“text” name=“name” size=“20”$#/p$ #p align=“center”$密码

#input type=“password” name=“pwd” size=“20”$#/p$ #p align=“center”$

#input type=“submit” value=“提交” name=“B1”$#/p$ #/form$ #/body$ #/html$

jdbc.jsp文件内容: #html$

#head$#title$Add User to DB#/title$#/head$

#%@page import=“java.sql.*”%$

#%@page import=“com.microsoft.jdbc.sqlserver.SQLServerDriver”%$

#%@page import=“com.microsoft.jdbc.*”%$

#%@page import=“java.util.*”%$ #body$

#pre$ #% //Get parameters from request String name,pwd;int num;name=request.getParameter(“name”);pwd=request.getParameter(“pwd”);//add infomation to DB try{ Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();Connection con=DriverManager.getConnection(“jdbc:odbc:test”,“sa”,“like”);Statement stmt=con.createStatement();stmt.executeUpdate(“insert into users values('”+name+“','”+pwd+“')”);//query DB for display all users ResultSet rs=stmt.executeQuery(“select * from users”);//rs.first();out.println(“All user in DB!”);while(rs.next()){

out.print(“user name: ”);

out.print(rs.getString(“name”)+“

password: ”);

out.println(rs.getString(“password”));} num=stmt.getMaxRows();out.println(num);rs.close();stmt.close();con.close();}catch(Exception ex){

out.println(ex.getMessage());

} %$

#/pre$ #/body$ #/html$

八、测试效果

启动tomcat,启动浏览器,在浏览器的地址栏中键入http://localhost:8080/jdbc/adduser.htm,在出现 的网页中填入用户名密码,点击“提交”,即可跳到jdbc.jsp文件,列出此时数据库中所有的用户。

第五篇:MySQL数据库连接超时(Wait_timeout)问题总结

当应用程序和数据库建立连接时,如果超过了8个小时,应用程序不去访问数据库,数据库就会出现断掉连接的现象。这时再次访问就会抛出异常.一般的解决方法大多是在数据库连接字符串中增加“autoReconnect=true ”选项。但是这只对mysql4以前的版本有效。在最新的mysql中是无效的。其实要解决这个问题也有一个简单的方法,就是修改mysql的启动参数。缺省情况下mysql的timeout时间是28800秒,正好是8小时,增加一个0就可以了。决定从根源入手,设置mysql的wait_timeout为31536000(一年),再来试试。set-variable=wait_timeout=31536000 set-variable=interactive_timeout=31536000 问题得到了解决 想了深入解一下mysql的工作原理

百度了一下Google发现很多人都出现过这种问题,大多是配置hibernate时候出的问题,可惜我的项目中没有使用到hibernate只是简单的自己配了一个连接池,所以综合了问题的关键所在改了一下数据库配置,在这里暂且记录一下,以后备用。

Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。这就是问题的所在。

最近碰到了这个问题,检查后发现数据库连接池中保存的连接超时后失效了,下面是官方的解释 mysql gone-away

从Mysql 5.x的某个版本之后,MySQL的自动关闭空闲连接的特性被修改了,假如一个连接空闲到超时时间(默认28000秒8小时),再次发起的Reconnect重新连接请求不会被接受,需要重新建立新连接,这就导致了SER的重连机制不能正常工作:SER只会在需要操作数据库时去使用同一个连接接口,断开了则发起重新连接请求,而且这个问题短期内SER也不能够解决。

下文中将具体讲述处理的方法:

1.使用Mysql 4.0或4.1版本,如果没有用到Mysql 5的一些新特性比如存储过程触发器之类。

2.定时重启Mysql服务器或Ser(由于本问题可能同样会影响到其它一些需要Mysql支持的服务器程序,所以重启Mysql服务器为好,但需要检测Mysql服务器不被使用的一个时间重启比较难确定)

3.设置my.cnf,有mysqld字段内增加参数:

[mysqld]port = 3306socket = /tmp/mysql.sockwait_timeout= 500000interactive_timeout = 500000(500000秒约五六天的超时时间,可根据实际需要选择一个数据库可能空闲的最长时间稍大的时间值。)重启Mysqld应用即可,也可以在执行mysqld时加-o wait_timeout=500000参数同样效果。

在MySQL客户端show variable时应该可以看到最后一条从默认的wait_time=28000变成500000了。

(假如重启Mysqld不生效,可以重启机子)

下载SQL_Server_ODBC数据源连接失败问题总结范文大全word格式文档
下载SQL_Server_ODBC数据源连接失败问题总结范文大全.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    总结一下不同单元之间的连接问题

    总结一下不同单元之间的连接问题论坛里常有人问不同单元之间的连接问题,我自己也一直被这个问题所困绕,最近从ANSYS工程分析进阶实例上知道了ANSYS中不同单元之间的连接原则。......

    解决远程桌面无法连接的问题-总结的精华(5篇范文)

    解决远程桌面无法连接的问题-总结的精华 远程桌面连接组件是从Windows 2000 Server开始由微软公司提供的,WINDOWS 2000 SERVER中他不是默认安装的。该组件一经推出受到了很多......

    Android蓝牙连接总结

    蓝牙连线时首先会定义一个专门用来连接的函数体BtconnectDevice,当按下Btconnect(为一个Buttton名时)时,程序会判断此时Btconnect键是什么状态,当Btconnect键为连接状态时,因为按......

    蛋糕卷失败原因总结,各种问题一次解决

    蛋糕卷失败原因总结,各种问题一次性解决 一直以来蛋糕卷都是烘焙界的宠儿,柔软湿润的海绵蛋糕体,加上各种口味或水果的顺滑奶油,让人欲罢不能。 私房和甜点店总会出一两款这......

    三菱PLC与变频器连接问题

    三菱PLC 应用 如何判断用PNP 还是NPN 的个人工作心得 10~30VDC 接近开关与PLC 连接时,如何判断用PNP 还是NPN 的个人工作心得: 对于PLC 的开关量输入回路。我个人感觉日本三菱......

    三菱PLC与变频器连接问题

    三菱PLC应用如何判断用PNP还是NPN的个人工作心得10~30VDC接近开关与PLC连接时,如何判断用PNP还是NPN的个人工作心得:对于PLC的开关量输入回路。我个人感觉日本三菱的要好得多,......

    创业失败总结

    前年面临毕业的小于和寝室两名朋友商量说自己想创业当老板,这一想法得到了两位朋友的支持,合计后他们决定开一家酒店,因为他们一致看好学校以及周边资源,认为酒店在这里比较有市......

    CSFB概率性失败问题

    昌吉CSFB业务概率性失败问题分析报告 前期昌吉移动新址室分站点多次反应CSFB业务出现概率性失败现象,针对此情况,中兴公司安排人员从5月7日早10点开始测试至晚8点,共测试CSFB主......