当前位置:文档之家› 客户端无法连接数据库问题分析

客户端无法连接数据库问题分析

客户端无法连接数据库问题分析
客户端无法连接数据库问题分析

客户端无法连接问题分析

一、局域网问题

请先检查局域网是否已经连通,

1.看ping 服务器IP能否ping通。这个实际上是看和远程sql server 2000服务器的物理连接是

否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。

附:具体ping的操作如:单击“开始”菜单,选择“运行”输入命令:“ping+服务器名或IP地址+ -t”,如所示:“ping lyl -t”回车,看黑屏窗口内有无连续信息。如果有连续信息说明正常;如果无反应则说明不同,有问题。

2.若在网上邻居访问服务器,不能访问或无法打开服务器上的共享资源,说明是局域网连接

有问题或未开放权限。

具体网络无法访问服务器的检查操作请参见附件中另外一个文件《客户端无访问服务器处理.doc》

二、防火墙的问题

请检查是否有防火墙存在,如存在请将防火墙退出或者将其级别降低。

三、端口或者协议配置问题

在确保客户端的数据库配置参数正确的情况下,您的计算机还是不能访问到数据库或者访问速度非常慢,您就考虑端口或者网络协议的问题。

在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。

如telnet 192.168.0.1 1433

通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。

如果这一步有问题,应该检查以下选项。

①检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。

②检查服务器端和客户端有没启用TCP/IP,Named Pipes及多协议。检查方法是,在服务器上和客户端(工作站)打开开始菜单->程序->Microsoft SQL Server->服务器网络实用工具或者在开始菜单->运行中输入cliconfg ->确定(如图一、二),看启用的协议里是否有TCP/IP,Named Pipes及多协议,如果没有,则启用。

(图一)

(图二)

③检查服务器和客户端的TCP/IP端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的TCP/IP的属性,确保默认端口为1433(图三)。

(图三)

④如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。

⑤检查服务器是否在1433端口侦听。如果服务器没有在TCP连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入

netstat -a -n 或者是netstat -an,在结果列表里看是否有类似tcp 127.0.0.1 1433 listening或tcp 0.0.0.0:1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。在服务器端启动查询分析器,输入select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁(图四)。

(图四)

如果以上都没问题,这时你再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。

⑥在正常情况,客户端的网络协议不需要人工干预,但有时会出现协议不正常的情况,若客户端数据库参数配置中“数据库服务器”为服务器计算机名称,请在SQL Server客户端网络实用工具中“按顺序启用协议”设置中将“Named Pipes”放在“TCP/IP”之前。若客户端数据库参数配置中“数据库服务器”为服务器IP地址,请在SQL Server客户端网络实用工具中“按顺序启用协议”设置中将“TCP/IP”放在“Named Pipes”之前(图五)。

(图五)

四、SQL Server数据库问题

如果所有的工作站程序都不能访问数据库(包括服务器端),就应该考虑是SQL Server的问题,请检查SQL Server是否正常启动、SQL Server安装是否正确等。SQL Server安装容易出现的问题通常是由于SQL Server使用了"仅Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如tjuser )进行连接。解决方法如下所示:

①在服务器端使用企业管理器,并且选择"使用Windows 身份验证"连接上SQL Server

②展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡。

③在"身份验证"下,选择"SQL Server和Windows "(图六)。

(图六)

④重新启动SQL Server服务。(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。

五、访问服务器权限问题

客户端每次重启后无法连接数据库,通过网上邻居访问服务器一次,才能连接成功。

这个是windows网络访问的问题,在服务器上启用guest用户,并在服务器上建个user用户,在客户端也建立相同名称的user用户,密码也相同,客户端用建立的user用户登录。

六、连接动态库问题

程序访问SQL数据库必须的动态库

DBNETLIB.DLL 网络连接库

ntwdblib.dll 连接MSSQL数据库的驱动库

dbnmpntw.dll 命名管道连接数据库使用的DLL

dbmssocn.dll TCP/IP连接数据库使用的DLL

DBNETLIB.DLL一般放在system32系统目录下,后三者可放在system32系统目录下也可放在exe 执行程序目录下。

ntwdblib.dll有多个版本,典型的是1998.11.13.0(win98版)和2000.80.194.0(win2000版),win98系统下必须使用98版动态库,win2000或以上windows系统一般两个版本的动态库均支持,但有些系统也存在异常无法连接,请尝试替换ntwdblib.dll的两个版本文件。

七、配置连接

SQL Server客户端配置连接工具。客户端没有安装SQL Server,可从服务器system32下复制windbver.exe,粘贴到客户端system32下。

在开始->运行输入 windbver ->确定(图七)

(图七)在 Net Library页面中设置 Default Netword,一般可设置为Named Pipes、TCP/IP Sockets、DBNETLIB.DLL,请尝试切换三种连接方式(图八、九)

(图八) (图九)

配置的过程就是更改注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo 中的信息。 "DSQUERY"="DBMSSOCN" //连接方式TCP/IP Sockets

"DSQUERY"="DBNMPNTW" //连接方式Named Pipes

"DSQUERY"="DBNETLIB" //连接方式DBNETLIB.DLL

八、操作系统问题

如果工作站平常连接都正常,突然某一时刻都连接不正常了,有时重新启动服务器后,所有的系统就能正常使用了,请考虑服务器操作系统或SQL Server 的问题,特别是如果您的服务器曾经被感染过病毒,或频繁出现过断电情况等。请重新安装SQL Server 或操作系统。

如果只是某一工作站无法连接,请安装SQL Server 客户端工具或重装操作系统。

数据库连接池的好处

数据库连接池的好处.txt-//自私,让我们只看见自己却容不下别人。如果发短信给你喜欢的人,他不回,不要再发。看着你的相片,我就特冲动的想P成黑白挂墙上!有时,不是世界太虚伪,只是,我们太天真。数据库连接池的好处 对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。 连接复用。通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。 对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问题的。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套高效的连接分配、使用策略,最终目标是实现连接的高效、安全的复用。 数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。如: 外部使用者可通过getConnection 方法获取连接,使用完毕后再通过releaseConnection 方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 数据库连接池技术带来的优势: 1.资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。 2.更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。 3.新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。

关于DBCP数据库连接池配置整理

1.简介 DBCP(DataBase Connection Pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是tomcat 使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。 dbcp提供了数据库连接池可以在spring,iBatis,hibernate中调用dbcp完成数据库连接,框架一般都提供了dbcp连接的方法; tomcat中也提供了dbcp的jndi设置方法,也可以不在框架中使用dbcp,单独使用dbcp 需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar 2.参数说明 翻译自https://www.doczj.com/doc/c96137776.html,

这里可以开启PreparedStatements池. 当开启时, 将为每个连接创建一个statement 池,并且被下面方法创建的PreparedStatements将被缓存起来: ●public PreparedStatement prepareStatement(String sql) ●public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) 如果容许则可以使用下面的方式来获取底层连接: Connection conn = ds.getConnection(); Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate(); ... conn.close() 默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.(关闭底层 连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,并且仅当需要直接访问驱动的特定功能时使用. 注意: 不要关闭底层连接, 只能关闭前面的那个 如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发。 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.在resultset中游历不被计算为被使用。 3.使用注意点

客户端连接不上服务器

客户端连接不上服务器 2009年08月15日星期六 21:57 用友通客户端登录时要进行注册连接操作,连接过程可能由于各种原因导致连接失败,如下分析几种典型连接失败的原因和解决方案。问:用友通客户端双击后提示:不能登录到服务器[UFIDA]:failed:不能得到服务器。或者选择服务器后提示:不能连接到服务器,可能是:没有安装用友产品或数据服务没有启动。 图:双击客户端 图:选择服务器 分析:导致此问题现象原因比较复杂,需要逐步分析问题原因,先分析服务器环境是否正常,然后再分析客户端环境,各分析操作详见一下说明,可以根据实际情况选择相应的解决方案。 服务器环境分析流程如下: 1. 系统管理能否打开 2. 服务能否正常运行

3. 用友通能不能正常注册登录 客户端环境分析流程如下: 1. 网络连接是否正常 2. 计算机名称及注册表配置是否正确 3. 服务器防火墙或端口设置 4. HOSTS文件设置 5. ODBC数据源连接测试 6. 操作系统和数据库补丁以及产品补丁服务器环境分析流程如下: 1、系统管理能否打开 情况一: 情况二:

2、服务能否正常运行 在服务器端检查服务是否启动。步骤为:控制面板——管理工具——服务,找到用友通和sql的服务,如果服务没有启动,手工启动即可。如果不能正常启动服务,可以用下面的方案解决:

3、用友通能不能正常注册登录 如果服务器端的用友通也打不开,可以尝试通过配置服务器来解决,具体步骤如下: 开始——程序——用友通系列管理软件——用友通——服务器设置,在“当前”后面的文本框里输入服务器的IP地址或者127.0.0.1,点击“选择”即可。如图所示:

01关于数据库连接池和动态数据源的实现课案

关于数据库连接池和动态数据源的实现、使用 对于一个简单的数据库应用,由于数据库的访问不是很频繁。这时可以很简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样就不会带来更多的性能上的开销。但是对于复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。这就意味我们需要去考虑怎样把一个连接多次使用。 连接复用,通过建立数据库的连接池以及一套连接使用的管理策略,使得一个数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭给系统带来的开销。外部使用者可以通过getConnection方法获取连接,使用完毕之后再通过releaseConnection 方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 一般的数据库连接池,是使用配置文件在项目启动的使用加载配置文件,根据文件中描述,生成对应的数据库连接池。连接池有许多的属性比如:连接池的初始化连接处、连接池的最大连接数、每次的自增连接数、最大空闲连接数等等 数据库连接池技术带来的优势: 1.资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减 少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以 及数据库临时进程/线程的数量) 2.更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用,此 时连接的初始化工作均已完成,对于业务处理而言,直接利用现有的可以连接,避 免了数据库连接初始化和释放过程的时间开销,从而缩短了系统整体的响应时间。 3. 统一的连接管理,避免数据库连接泄露 在较为完备的数据库连接池实现中可以根据预先的连接占用超时设定,强制回收被 占用的连接。从而避免常规数据库连接操作中可能出现的资源泄露。 一个数据库连接池的实现 1.前言 数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游标(ResultSet)、Statement、连接(Connection)等资源),往往会直接导致系统的稳定。这类不稳定因素,不单单由数据库或者系统本身一方引起,只有系统正式使用后,随着流量、用户的增加,才会逐步显露。 在基于Java开发的系统中,JDBC是程序员和数据库打交道的主要途径,提供了完备的数据库操作方法接口。但考虑到规范的适用性,JDBC只提供了最直接的数据库操作规范,对数据库资源管理,如:对物理连接的管理及缓冲,期望第三方应用服务器(Application Server)的提供。下面以JDBC规范为基础,介绍相关的数据库连接池机制,并就如果以简单的方式,实现有效地管理数据库资源介绍相关实现技术。

远程无法连接SQL2000的原因和解决办法

看ping服务器IP/服务器名称是否ping通。 说明:如果ping服务器IP地址不成功,这说明远程sql server2000服务器的物理连接不存在,还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的,比如ISA Server.防火墙软件可能会屏蔽对ping,telnet等的响应。 解决办法: 1.检查网络。 2.查看配置。 3.确保远程Sql Server2000服务器的IP拼写正确。 在Dos或命令行下输入telnet服务器IP端口,看能否连通,如:telnet192.168.1.61433。 说明:通常端口值是1433,因为1433是sql server2000的对于Tcp/IP的默认侦听端口,如果有问题,通常这一步会出问题。通常的提示是“……不能打开到主机的连接,…….,连接失败"。 解决办法: 1.检查远程服务器是否启动了sql server2000服务。如果没有,则启动。 2.检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检 查方法是,在服务器上打开开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。 3.检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用 协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。4.如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开 放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。 5.检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是 连接不上的。检查方法是在服务器的dos或命令行下面输入netstat-a-n或者是netstat -an,在结果列表里看是否有类似tcp127.0.0.11433listening的项。如果没有,则通常需要给sql server2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入select @@version执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。 检查客户端设置。 解决办法: 程序->Microsoft SQL Server->客户端网络使用工具。像在服务器网络实用工具里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。

{T3}用友客户端连接不上服务器

{T3}用友客户端连接不上服务器 时间:2010-4-2 15:28:48 以浏览:次 用友通客户端登录时要进行注册连接操作,连接过程可能由于各种原因导致连接失败,如下分析几种典型连接失败的原因和解决方案。 问:用友通客户端双击后提示:不能登录到服务器[UFIDA]:failed:不能得到服务器。或者选择服务器后提示:不能连接到服务器,可能是:没有安装用友产品或数据服务没有启动。 图:双击客户端 图:选择服务器 分析:导致此问题现象原因比较复杂,需要逐步分析问题原因,先分析服务器环境是否正常,然后再分析客户端环境,各分析操作详见一下说明,可以根据实际情况选择相应的解决方案。 服务器环境分析流程如下: 1. 系统管理能否打开 2. 服务能否正常运行 3. 用友通能不能正常注册登录 客户端环境分析流程如下: 1. 网络连接是否正常 2. 计算机名称及注册表配置是否正确 3. 服务器防火墙或端口设置 4. HOSTS文件设置 5. ODBC数据源连接测试 6. 操作系统和数据库补丁以及产品补丁 服务器环境分析流程如下: 1、系统管理能否打开

2、服务能否正常运行 在服务器端检查服务是否启动。步骤为:控制面板——管理工具——服务,找到用友通和sql的服务,如 3、用友通能不能正常注册登录 如果服务器端的用友通也打不开,可以尝试通过配置服务器来解决,具体步骤如下: 开始——程序——用友通系列管理软件——用友通——服务器设置,在“当前”后面的文本框里输入服务器的IP地址或者127.0.0.1,点击“选择”即可。如图所示:

客户端环境分析流程如下: 1、检查网络连接是否正常 在开始运行里输入cmd,回车后进入dos窗口,再输入命令“ping IP”地址(IP代表服务器端的IP地址),检查客户端能否ping通服务器。客户端Ping不通服务器时,服务应该开启了防火墙,在防火墙-高级-icmp设置-允许传入回显请求。

Java数据库连接池

Java数据库连接池 Tomcat6.0 Tomcat6.0连接池配置 1. 配置tomcat下的conf下的context.xml文件,在之间添加连接池配置: 2. 配置你的应用下的web.xml中的之间加入 DB Connection jdbc/oracle javax.sql.DataSource Container 3.把连接数据库的第三方驱动放到common/lib下面就ok了 4.测试程序我就不写了 1.配置tomcat下的conf下的server.xml中的host标签中添加连接池配置: 1.

Java中数据库连接池原理机制

连接池的基本工作原理 基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效治理。我们知道,对于共享资源,有一个很闻名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的治理机制监视数据库的连接的数量?使用情况,为系统开发?测试及性能调整提供依据。 服务器自带的连接池 JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如BEA的WebLogic 和IBM的WebSphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。 连接池要害问题分析

1、并发问题 为了使连接治理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为java语言自身提供了对并发治理的支持,使用synchronized要害字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized要害字,如:public synchronized Connection getConnection() 2、多数据库服务器和多用户 对于大型的企业级应用,经常需要同时连接不同的数据库(如连接Oracle和Sybase)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池治理类,在连接池治理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址()?用户名()?密码()等信息。如tx.url=172.21.15.123:5000/tx_it,https://www.doczj.com/doc/c96137776.html,er=yang,tx.passWord=yang321。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池治理类实例为每个连接池实例取一个名字,通过不同的名字来治理不同的连接池。 对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。 3、事务处理 我们知道,事务具有原子性,此时要求对数据库的操作符合“ALL-ALL-NOTHING”原则,即对于一组SQL语句要么全做,要么全不做。

数据库连接池原理

一、连接池的基本工作原理 1、基本概念及原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量和使用情况,为系统开发、测试及性能调整提供依据。 2、服务器自带的连接池 JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如BEA的WebLogic 和IBM的WebSphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。 二、连接池关键问题分析 1、并发问题 为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为Java语言自身提供了对并发管理的支持,使用synchronized关键字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized关键字,如:public synchronized Connection getConnection () 2、多数据库服务器和多用户 对于大型的企业级应用,常常需要同时连接不同的数据库(如连接Oracle和Sybase)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的地址、用户名、密码等信息。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。 对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。 3、事务处理 我们知道,事务具有原子性,此时要求对数据库的操作符合“ALL-ALL-NOTHING”原则,即对于一组SQL语句要么全做,要么全不做。 在Java语言中,Connection类本身提供了对事务的支持,可以通过设置Connection的AutoCommit属性为false,然后显式的调用commit或rollback方法来实现。但要高效的进行Connection复用,就必须提供相应的事务支持机制。可采用每一个事务独占一个连接来实现,这种方法可以大大降低事务管理的复杂性。 4、连接池的分配与释放 连接池的分配与释放,对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。 对于连接的管理可使用空闲池。即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给它(实际是先做连接是否有效的判断,如果可用就分配给用户,如果不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接),如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(maxConn),如果没有达到,就新建一个连接,如果已经达到,就等待一定的时间(timeout)。如果在等待的时间内有连接被释放出来就可以把这个连接分配给等待的用户,如果等待时间

用友通客户端连接不上服务器解决方案样本

用友通客户端连接不上服务器 用友通客户端登录时要进行注册连接操作, 连接过程可能由于各种原因导致连接失败, 如下分析几种典型连接失败的原因和解决方案。 问: 用友通客户端双击后提示: 不能登录到服务器[UFIDA]:failed:不能得到服务器。或者选择服务器后提示: 不能连接到服务器, 可能是:没有安装用友产品或数据服务没有启动。 图: 双击客户端 图: 选择服务器 分析: 导致此问题现象原因比较复杂, 需要逐步分析问题原因, 先分析服务器环境是否正常, 然后再分析客户端环境, 各分析操作详见一下说明, 能够根据实际情况选择相应的解决方案。 服务器环境分析流程如下: 1. 系统管理能否打开 2. 服务能否正常运行 3. 用友通能不能正常注册登录 客户端环境分析流程如下: 1. 网络连接是否正常

2. 计算机名称及注册表配置是否正确 3. 服务器防火墙或端口设置 4. HOSTS文件设置 5. ODBC数据源连接测试 6. 操作系统和数据库补丁以及产品补丁 服务器环境分析流程如下: 1、系统管理能否打开 情况一: 情况二: 2、服务能否正常运行 在服务器端检查服务是否启动。步骤为: 控制面板——管理工具——服务, 找到用友通和s ql的服务, 如果服务没有启动, 手工启动即可。如果不能正常启动服务, 能够用下面的方案解决:

口开发情况, 用telnet IP 端口号命令查看端口连接情况 情况4、 ADO 原因: 安装ADO2.7版本, 通网站下载 如果还是不能解决的话建议重新安装软件。 3、用友通能不能正常注册登录 如果服务器端的用友通也打不开, 能够尝试经过配置服务器来解决, 具体步骤如下: 开始——程序——用友通系列管理软件——用友通——服务器设置, 在”当前”后面的文本框里输入服务器的IP地址或者127.0.0.1, 点击”选择”即可。如图所示: 客户端环境分析流程如下: 1、检查网络连接是否正常 在开始运行里输入cmd, 回车后进入dos窗口, 再输入命令”ping IP”地址( IP代表服务器端的IP地址) , 检查客户端能否ping通服务器。

04. 数据库连接池(DataSource)

数据库连接池(DataSource) 1、概念 在三层架构中,DAO层直接与数据库交互,首先要建立与数据库的连接,如果采用下图(a)所示,则用户每次的请求都要创建连接,用完又关闭,而数据库连接的创建和关闭需要消耗较大的资源,因此实际开发中常采用图(b)所示,在应用程序启动时创建一个包含多个Connection对象的连接池,DAO层使用时直接从池子里取一个Connection对象,用完后放回池子,避免了重复创建关闭数据库连接造成的开销。 2、数据库连接池原理 下面的代码模拟了数据库连接池的原理(代码中的JDBCUtil工具类见《MySQL(JDBC)》),池子里保持了10个Connection对象,并提供了getConnection和release方法: public class ConnectionPoolDemo { //连接池实际上就是一个List private static List pool = new LinkedList();

static{//加载连接池类时在池子中放入10个连接 for(int i = 0;i < 10;i ++){ Connection conn; try { conn = JDBCUtil.getConnection(); pool.add(conn); } catch (Exception e) { e.printStackTrace(); } } } //从池子中取出一个连接 public synchronized Connection getConnection(){ return pool.remove(0); } //把连接还回池子中 public static void release(Connection conn){ pool.add(conn); } } 3、编写一个符合规范的连接池 上节模拟数据库连接池原理的代码也实现了一个简单连接池,但是不符合规范(Sun公司制定)。编写一个符合规范的连接池需要实现javax.sql.DataSource接口。(DataSource接口中定义了两个重载的getConnection方法) 编程难点☆:当用户使用完Connection,执行conn.close()时,Connection对象应保证将自己还给连接池,而不要把conn关闭。之所由Connection对象保证将自己返回到LinkedList 中,是因为DataSource接口中并未定义上节例子中类似release的方法。所以必须改写Connection中的close方法,使得用户执行conn.close()时,将Connection对象还给连接池。解决方案☆:改写驱动程序中Connection类的close方法。对已知类的某些方法进行功能上的改变,有以下几种编码方案(☆): 1)编写子类,覆写需要改变的方法。此处行不通,原因有:①程序中不知道继承哪个驱动的Connection实现类②数据库驱动对Connection接口的实现类是final的,不允许被继承。 2)装饰(包装)设计模式(静态代理) ①定义包装类:MyConnection,该类完成了对com.mysql.jdbc.Connection类的包装。 关键词:保持被包装对象的原有信息、对某个/某些方法进行改写。包装类的编写过程如下:/**

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 等的响应,因此在检查连接问题的时候,我们要先把防火墙软件暂时关闭,或者打开所有被封闭的端口。

数据库连接池的研究与实现lunwen

数据库连接池的研究与实现 摘要 在基于JDBC的数据库实际应用开发中,对数据库连接的管理是一个重点也是一个难点,频繁对数据库的连接与关闭操作、多客户对数据库的并发访问,一定程度上决定了WEB系统的响应以及应用性能。使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在数据库连接池方面的使用现状后,总结一了些数据库连接池开发程序中容易忽略的问题。并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和容易,从实际上论证了这种设计方案的可行性。 关键词:连接池;数据库;JDBC;并发访问

Research and realization of the Database Connection Pool Abstract In the practically application development of database based on JDBC, the management of database connection is a key point and also a difficulty. The response and performance of the WEB system are depended on frequently connecting, closing and multi-user accessing in a certain extent. Using the Database Connection Pool can provide management and maintenance for connections of the database. The upper applications may access the database recourse via the Database Connection Pool, in order to upgrade system performance and fully utilize the system recourse. This article summarizes some issues which are easily ignored in the application development of the Database Connection Pool by the way of introducing and analyzing the basal working principles of the Database Connection Pool ,comprehending the using actuality of the Database Connection Pool on the popular WEB servers. Besides, I established a comparatively highly effective policy of the Connection Pool management after having learned and comprehended key technique of implementing the Connectivity Pool, and actually had developed a Database Connection Pool module under the guidance of that policy, causing the access of system resource by the upper applications via current Connectivity Pool becoming relatively highly effective and easy, demonstrated the feasibility of this design project in practice. Key words:Database Connection Pool; Database; JDBC; Concurrence access

数据库连接池配置的几种方法

今天遇到了关于数据源连接池配置的问题,发现有很多种方式可以配置,现总结如下,希望对大家有所帮助:(以Mysql数据库为例) 一,Tomcat配置数据源: 方式一:在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,内容如下: 方式二:在tomcat6.0的目录conf下面的context.xml中,修改原来的context标签,改成内容如下: WEB-INF/web.xml 方式三:在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内改成如下形式:

连接池优缺点

数据库连接池的好处 对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数 据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但 是对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统 的性能,因为对于连接的使用成了系统性能的瓶颈。 连接复用。通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以 得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。 对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放 所造成的问题的。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套 高效的连接分配、使用策略,最终目标是实现连接的高效、安全的复用。 数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接 获取和返回方法。如: 外部使用者可通过getConnection方法获取连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 数据库连接池技术带来的优势: 1.资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的 基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。 2.更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始 化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和 释放过程的时间开销,从而缩减了系统整体响应时间。 3.新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池 技术,几年钱也许还是个新鲜话题,对于目前的业务系统而言,如果设计中还没有考虑到连接池 的应用,那么…….快在设计文档中加上这部分的内容吧。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 4.统一的连接管理,避免数据库连接泄漏 在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从 而避免了常规数据库连接操作中可能出现的资源泄漏。一个最小化的数据库连接池实现: 连接池的优缺点 优点 使用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程。而采用 数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到 数据库服务器,这样就节省了时间。 缺点 数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。

mysql数据库不能远程连接

1130 - Host XXX is not allowed to connect to t his MySQL server。 1.在用Navicat配置远程连接Mysql数据库时遇到如下报错信息,这是由于Mysql配置了不支持远程连接引起的。 2.在安装Mysql数据库的主机上登录root用户: mysql -u root -p

3.依次执行如下命令: https://www.doczj.com/doc/c96137776.html,e mysql; 2. 3.select host from user where user='root'; 可以看到当前主机配置信息为localhost. 4.将Host设置为通配符% Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。user=root Host=localhost,表示只能通过本机客户端去访问。而%是个通配符,如果 Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置; update user set host = '%'where user ='root'; Host设置了“%”后便可以允许远程访问。 5.Host修改完成后记得执行flush privileges使配置立即生效 flush privileges; 6.使用navicat 成功连接至mysql

JAVA数据库连接池详解

Java中数据库连接池原理机制的详细讲解 1、基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量?使用情况,为系统开发?测试及性能调整提供依据。 2、服务器自带的连接池 JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如BEA的W ebLogic和IBM的WebSphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。 连接池关键问题分析 1、并发问题 为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为Java语言自身提供了对并发管理的支持,使用synchronized 关键字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized关键字,如: public synchronized Connection getConnection() 2、多数据库服务器和多用户 对于大型的企业级应用,常常需要同时连接不同的数据库(如连接Oracle和Sybas e)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址()?用户名()?密码()等信息。如tx.url=172.21.15.123:5000/tx_it,https://www.doczj.com/doc/c96137776.html,er=yan g,tx.password=yang321。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。 对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。

相关主题
文本预览
相关文档 最新文档