﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-forget and forget-随笔分类-数据库开发</title><link>http://www.blogjava.net/forget/category/7755.html</link><description>&lt;h2&gt;能吃能睡是福;能忘是大福......&lt;/h2&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 20:13:38 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 20:13:38 GMT</pubDate><ttl>60</ttl><item><title>Client does not support authentication protocol requested问题的解决</title><link>http://www.blogjava.net/forget/archive/2006/03/02/33141.html</link><dc:creator>橘子</dc:creator><author>橘子</author><pubDate>Thu, 02 Mar 2006 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/forget/archive/2006/03/02/33141.html</guid><wfw:comment>http://www.blogjava.net/forget/comments/33141.html</wfw:comment><comments>http://www.blogjava.net/forget/archive/2006/03/02/33141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/forget/comments/commentRss/33141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/forget/services/trackbacks/33141.html</trackback:ping><description><![CDATA[<P>Mysql4安装Client does not support authentication protocol requested问题的解决</P>
<P>今天升级了一下Mysql数据库，结果出现了以下错误：<BR>Client does not support authentication protocol requested by server; consider upgrading MySQL client</P>
<P>升级到4.1.7版:<BR>[root@eygle gbook]# mysql -uroot -p -heygle<BR>Enter password: <BR>Welcome to the MySQL monitor.&nbsp; Commands end with ; or \g.<BR>Your MySQL connection id is 44 to server version: 4.1.7-max</P>
<P>Type 'help;' or '\h' for help. Type '\c' to clear the buffer.</P>
<P>mysql&gt; </P>
<P>查询了一下，在官方网站发现了解决方法:<BR><A href="http://dev.mysql.com/doc/mysql/en/Old_client.html"><U><FONT color=#0000ff>http://dev.mysql.com/doc/mysql/en/Old_client.html</FONT></U></A></P>
<P>共有以下两种解决方法:</P>
<P>一:</P>
<P>mysql&gt; SET PASSWORD FOR<BR>-&gt; <A href="mailto:'some_user'@'some_host'"><U><FONT color=#800080>'some_user'@'some_host'</FONT></U></A> = OLD_PASSWORD('newpwd');</P>
<P>二:</P>
<P>mysql&gt; UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')<BR>-&gt; WHERE Host = 'some_host' AND User = 'some_user';<BR>mysql&gt; FLUSH PRIVILEGES;</P>
<P><BR>使用第二种方法，解决了该问题。</P><img src ="http://www.blogjava.net/forget/aggbug/33141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/forget/" target="_blank">橘子</a> 2006-03-02 10:45 <a href="http://www.blogjava.net/forget/archive/2006/03/02/33141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小结SQL Server连接失败错误及解决</title><link>http://www.blogjava.net/forget/archive/2006/01/05/26671.html</link><dc:creator>橘子</dc:creator><author>橘子</author><pubDate>Thu, 05 Jan 2006 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/forget/archive/2006/01/05/26671.html</guid><wfw:comment>http://www.blogjava.net/forget/comments/26671.html</wfw:comment><comments>http://www.blogjava.net/forget/archive/2006/01/05/26671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/forget/comments/commentRss/26671.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/forget/services/trackbacks/26671.html</trackback:ping><description><![CDATA[在使用 SQL Server 的过程中，用户遇到的最多的问题莫过于连接失败了。一般而言，有以下两种连接 SQL Server 的方式，一是利用 SQL Server 自带的客户端工具，如企业管理器、查询分析器、事务探查器等；二是利用用户自己开发的客户端程序，如ASP 脚本、VB程序等，客户端程序中又是利用 ODBC 或者 OLE DB 等连接 SQL Server。下面，我们将就这两种连接方式，具体谈谈如何来解决连接失败的问题。<BR>一、客户端工具连接失败<BR>在使用 SQL Server 自带的客户端工具（以企业管理器为例）连接 SQL Server时，最常见的错误有如下一些：<BR>1、SQL Server 不存在或访问被拒绝<BR>ConnectionOpen (Connect())<BR>&gt;&gt;&gt;&gt; <BR>2、用户'sa'登录失败。原因：未与信任 SQL Server 连接相关联。<BR><BR>3、超时已过期。<BR>&gt;&gt;&gt;&gt;&nbsp;&nbsp;<BR>下面我们依次介绍如何来解决这三个最常见的连接错误。<BR>&gt;&gt;&gt;&gt;第一个错误"SQL Server 不存在或访问被拒绝"通常是最复杂的，错误发生的原因比较多，需要检查的方面也比较多。一般说来，有以下几种可能性：<BR>1、SQL Server名称或IP地址拼写有误；<BR>2、服务器端网络配置有误；<BR>3、客户端网络配置有误。<BR>要解决这个问题，我们一般要遵循以下的步骤来一步步找出导致错误的原因。<BR>&gt;&gt;&gt;&gt;首先，检查网络物理连接：<BR>ping ＜服务器IP地址＞ <BR>或者<BR>ping ＜服务器名称＞<BR>如果 ping ＜服务器IP地址＞ 失败，说明物理连接有问题，这时候要检查硬件设备，如网卡、HUB、路由器等。还有一种可能是由于客户端和服务器之间安装有防火墙软件造成的，比如 ISA Server。防火墙软件可能会屏蔽对 ping、telnet 等的响应，因此在检查连接问题的时候，我们要先把防火墙软件暂时关闭，或者打开所有被封闭的端口。<BR>如果ping ＜服务器IP地址＞ 成功而 ping ＜服务器名称＞ 失败，则说明名字解析有问题，这时候要检查 DNS 服务是否正常。有时候客户端和服务器不在同一个局域网里面，这时候很可能无法直接使用服务器名称来标识该服务器，这时候我们可以使用HOSTS文件来进行名字解析，具体的方法是：<BR>&gt;&gt;1、使用记事本打开HOSTS文件（一般情况下位于C:\WINNT\system32\drivers\etc）.<BR>&gt;&gt;2、添加一条IP地址与服务器名称的对应记录，如：<BR>172.168.10.24 myserver<BR>也可以在 SQL Server 的客户端网络实用工具里面进行配置，后面会有详细说明。<BR>&gt;&gt;&gt;&gt;其次，使用 telnet 命令检查SQL Server服务器工作状态：<BR>telnet ＜服务器IP地址＞ 1433<BR>如果命令执行成功，可以看到屏幕一闪之后光标在左上角不停闪动，这说明 SQL Server 服务器工作正常，并且正在监听1433端口的 TCP/IP 连接；如果命令返回"无法打开连接"的错误信息，则说明服务器端没有启动 SQL Server 服务，也可能服务器端没启用 TCP/IP 协议，或者服务器端没有在 SQL Server 默认的端口1433上监听。&gt;&gt;&gt;&gt;接着，我们要到服务器上检查服务器端的网络配置，检查是否启用了命名管道，是否启用了 TCP/IP 协议等等。我们可以利用 SQL Server 自带的服务器网络使用工具来进行检查。<BR>点击：程序 -＞ Microsoft SQL Server -＞ 服务器网络使用工具，&gt;&gt;&gt;&gt; <BR>从这里我们可以看到服务器启用了哪些协议。一般而言，我们启用命名管道以及 TCP/IP 协议。<BR>点中 TCP/IP 协议，选择"属性"，我们可以来检查 SQK Server 服务默认端口的设置，如下图所示：<BR>&gt;&gt;&gt;&gt; &gt;&gt;&gt;&gt;<BR>一般而言，我们使用 SQL Server 默认的1433端口。如果选中"隐藏服务器"，则意味着客户端无法通过枚举服务器来看到这台服务器，起到了保护的作用，但不影响连接。<BR>检查完了服务器端的网络配置，接下来我们要到客户端检查客户端的网络配置。我们同样可以利用 SQL Server 自带的客户端网络使用工具来进行检查，所不同的是这次是在客户端来运行这个工具。<BR>点击：程序 -＞ Microsoft SQL Server -＞ 客户端网络使用工具<BR>&gt;&gt;&gt;&gt; &gt;&gt;&gt;&gt;从这里我们可以看到客户端启用了哪些协议。一般而言，我们同样需要启用命名管道以及 TCP/IP 协议。<BR>点击 TCP/IP 协议，选择"属性"，可以检查客户端默认连接端口的设置<BR>&gt;&gt;&gt;&gt; <BR>该端口必须与服务器一致。<BR>单击"别名"选项卡，还可以为服务器配置别名。服务器的别名是用来连接的名称，连接参数中的服务器是真正的服务器名称，两者可以相同或不同。如下图中，我们可以使用myserver来代替真正的服务器名称sql2kcn-02，并且使用网络库 Named Pipes。别名的设置与使用HOSTS文件有相似之处。<BR>&gt;&gt;&gt;&gt; &gt;&gt;&gt;&gt;通过以上几个方面的检查，错误 1 发生的原因基本上可以被排除。下面我们再详细描述如何来解决错误 2。<BR>当用户尝试在查询分析器里面使用sa来连接SQL Server，或者在企业管理器里面使用sa来新建一个SQL Server注册时，经常会遇到如图 2 所示的错误信息。该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式，因此用户无法使用SQL Server的登录帐户（如 sa ）进行连接。解决方法如下所示：<BR>1、在服务器端使用企业管理器，并且选择"使用 Windows 身份验证"连接上 SQL Server；<BR>2、展开"SQL Server组"，鼠标右键点击SQL Server服务器的名称，选择"属性"，再选择"安全性"选项卡；<BR>3、在"身份验证"下，选择"SQL Server和 Windows "。<BR>4、重新启动SQL Server服务。<BR>在以上解决方法中，如果在第 1 步中使用"使用 Windows 身份验证"连接 SQL Server 失败，那么我们将遇到一个两难的境地：首先，服务器只允许了 Windows 的身份验证；其次，即使使用了 Windows 身份验证仍然无法连接上服务器。这种情形被形象地称之为"自己把自己锁在了门外"，因为无论用何种方式，用户均无法使用进行连接。实际上，我们可以通过修改一个注册表键值来将身份验证方式改为 SQL Server 和 Windows 混合验证，步骤如下所示：<BR>1、点击"开始"-"运行"，输入regedit，回车进入注册表编辑器；<BR>2、依次展开注册表项，浏览到以下注册表键：<BR>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]<BR>3、在屏幕右方找到名称"LoginMode"，双击编辑双字节值；<BR>4、将原值从1改为2，点击"确定"；<BR>5、关闭注册表编辑器；<BR>6、重新启动SQL Server服务。<BR>此时，用户可以成功地使用sa在企业管理器中新建SQL Server注册，但是仍然无法使用Windows身份验证模式来连接SQL Server。这是因为在 SQL Server 中有两个缺省的登录帐户：BUILTIN\Administrators 以及 ＜机器名＞\Administrator 被删除。要恢复这两个帐户，可以使用以下的方法：<BR>1、打开企业管理器，展开服务器组，然后展开服务器；<BR>2、展开"安全性"，右击"登录"，然后单击"新建登录"；<BR>3、在"名称"框中，输入 BUILTIN\Administrators；<BR>5、在"服务器角色"选项卡中，选择"System Administrators" ；<BR>点击"确定"退出；<BR>6、使用同样方法添加 ＜机器名＞\Administrator 登录。<BR>以下注册表键<BR>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode<BR>的值决定了SQL Server将采取何种身份验证模式。该值为1，表示使用Windows 身份验证模式；该值为2，表示使用混合模式（Windows 身份验证和 SQL Server 身份验证）。<BR>看完如何解决前两个错误的方法之后，让我们来看一下如图 3 所示的第三个错误。<BR>如果遇到第三个错误，一般而言表示客户端已经找到了这台服务器，并且可以进行连接，不过是由于连接的时间大于允许的时间而导致出错。这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器，并且是慢速连接时，有可能会导致以上的超时错误。有些情况下，由于局域网的网络问题，也会导致这样的错误。<BR>要解决这样的错误，可以修改客户端的连接超时设置。默认情况下，通过企业管理器注册另外一台SQL Server的超时设置是 4 秒，而查询分析器是 15 秒（这也是为什么在企业管理器里发生错误的可能性比较大的原因）。具体步骤为：<BR>1、在企业管理器中，选择菜单上的"工具"，再选择"选项"；<BR>2、在弹出的"SQL Server企业管理器属性"窗口中，点击"高级"选项卡；<BR>3、在"连接设置"下的"登录超时（秒）"右边的框中输入一个比较大的数字，如 20。<BR>&gt;&gt;&gt;&gt;查询分析器中也可以在同样位置进行设置。<BR>二、小结<BR>&gt;&gt;&gt;&gt;本文针对大部分用户在使用 SQL Server 过程中常见的连接失败的错误，重点讨论了在使用 SQL Server 客户端工具以及用户开发的应用程序两种情况下，如何诊断并解决连接失败的错误。看过本文以后，相信每一个读者都会对 SQL Server 的连接工作原理、身份验证方式以及应用程序开发等有一个较为全面而深入的连接。本文中所有的测试或者示例均在 Windows 2000 Advanced Server + SQL Server 2000 企业版上通过<img src ="http://www.blogjava.net/forget/aggbug/26671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/forget/" target="_blank">橘子</a> 2006-01-05 11:03 <a href="http://www.blogjava.net/forget/archive/2006/01/05/26671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>