• SQL Server 检查SQL连接错误问题的步骤


    贴一篇翻译的FAQ(我要是能写出这种水平就好了。。。),对于最常见的SQL连接问题,该步骤几乎应该都能应付。
    FAQ:检查SQL连接错误问题的步骤
    Q:我遇到过很多SQL连接错误,是否有一个解决连接问题的向导?
    A:
    基本上,当您不能连接您的SQL Server数据库时,问题可能会如下:
    1) 网络问题
    2) SQL Server配置问题
    3) 防火墙问题
    4) 客户端驱动问题
    5) 应用程序配置问题
    6) 认证和登陆问题
    步骤1:网络问题
    对于远程连接,一个稳定的网络是必要的。所以第一件要做的就是检查SQL的连接性问题,以确认我们依赖的网络是稳定和可工作的。请运行如下命令:
    ping -a <您的目标机>    (对于IPv4和IPv6分别使用 -4 and -6)
    ping -a <您的远程IP地址>
    nslookup(请多次输入您的本地和远程机器名和IP地址)
    如果您不能ping通您的目标机,很可能是因为网络故障或目标机器没有运行。很可能网络故障或目标机器没有在运行。但也可能是因为目标机在防火墙之后而防火墙阻止了ping包。网络中DNS的正确设置对于SQL连接也是非常重要的。错误的DNS登记也可能导致之后各种各样的连接问题。
    步骤2:SQL Server配置问题
    您需要确认目标SQL Server正在运行,而且在合适的协议中监听。您可以使用SQL Server Configuration Manager (SCM)来允许服务器端的协议。对于远程连接,NP和/或TCP protocols必须被允许。在您在SCM中允许了协议后,请确认重新启动SQL Server服务。
    您可以打开错误日志文件来查看服务其是否监听在合适的端口。错误日志的位置默认位于%ProgramFile%Microsoft SQL Server/MSSQLxx.xxx/MSSQL/Log
    步骤3:防火墙问题
    对于NP协议,请确认文件共享在防火墙的例外列表中。文件共享和NP都使用SMB协议。
    对于TCP协议您需要将SQL Server监听的TCP端口置于例外列表中。
    对于SQL Browser,请将UDP 1434端口置于例外列表中。
    同时,您可以将sqlservr.exe和sqlbrowser.exe也放到例外列表中。但我们不信任的机器间的IPSEC可能会导致某些包被阻止。请注意防火墙不会成为本地连接的问题原因(本地连接不经过防火墙)。
    步骤4:客户端驱动问题
    在这个阶段,您可以使用某些来测试您的连接。作为确认,测试需要在客户端机器上进行。
    请首先尝试:
    telnet <您的目标机> <TCP端口>
    您应该能够telnet到目标机器SQL Server的TCP端口如果TCP被设置为允许的话。如果不行的话请返回到前三个步骤再次检查。然后使用OSQL,SQLCMD和SQL Management Studio来测试SQL连接。如果您没有这些工具,请从微软官方网站下载SQL Express免费获得这些工具。
    OSQL(SQL Server 2000附带)使用MDAC。
    OSQL(SQL Server 2005和2008附带)使用SNAC ODBC。
    SQLCMD(SQL Server 2005和2008附带)使用SNAC OLEDB。
    SQL Management Studio(SQL Server 2005和2008附带)使用SQLClient。
    命令大致如下:
    osql -E -SYour_target_machine\Your_instance (对于Windows验证)
    osql -Uyour_user -SYour_target_machine\Your_instance (对于SQL验证)
    SQLCMD也可以这样应用。此外您也可以对TCP使用“-Stcp:Your_target_machine, Tcp_port”,对NP使用“-Snp:Your_target_machine\Your_instance”,对Shared Memory使用“-Slpc:Your_target_machine\Your_instance”。您需要知道只对某些协议失败还是对于所有协议都失败。
    在这个阶段,您应该不再会看到通常的错误信息诸如ERROR 26和ERROR 40了。如果您使用NP而且您依然看见error 40 (Named Pipes Provider: Could not open a connection to SQL Server),请尝试如下步骤:
    a) 在您的服务器上打开一个文件共享
    b) 运行“net view \\your_target_machine”和“net use \\your_target_machine\your_share”(您也可以尝试在Windows Explorer中映射网络驱动器)
    如果您在第二个步骤得到错误,那么很可能您存在操作系统/网络故障,而非SQL Server特有的错误。很可能您在前三个步骤中没有很好地设置,不然就可能是登录相关问题,这样您可以直接跳到第六个步骤。
    如果使用部分工具您能成功连接,但使用另外一些工具失败,那么很可能是驱动问题。
    您也可以使用“\windows\system32\odbcad32.exe”(内嵌于Windows)对于不同的驱动通过增加新的DSN来测试连接,不过这仅对于ODBC有效。
    步骤5:应用程序问题
    如果您在前四个步骤成功但依然在您的应用程序中看到错误,那么很可能这是由您应用程序中的连接问题导致。请考虑如下的可能的问题:
    a) 您的应用程序是否使用与第四个步骤相同的帐号进行连接?如果不是的话,您可能需要换一个可工作的服务帐号来进行第四步骤的测试。
    b) 您的应用程序使用的是何种SQL驱动?
    c) 您的连接字符串是什么?该连接字符串是否与您的驱动兼容?更多请参考http://www.connectionstrings.com/
    步骤6:认证和登录问题
    这可能是SQL连接问题中最复杂的部分了。这可能与您的网络,操作系统和SQL Server数据库都有关系。对于该问题没有一个简单的解决方案,需要具体问题具体分析。
    请牢记:
    a) 如果您使用了SQL验证,必须先允许混合验证。请检查http://msdn.microsoft.com/en-us/library/ms188670.aspx获得更多内容
    b) 请确认您的登录帐号对于您使用的数据库有足够的访问权限
    c) 请检查错误日志已获得更多详细信息
    如果对于以上步骤您有任何问题欢迎发在新闻组中
    对于纠错,对于我们最重要的是a) 准确的错误信息 b) 连接字符串
  • 相关阅读:
    把线程池比作装修公司
    字符串常量池
    如何理解多租户架构?
    Redis的List的删除
    MySQL Explain详解
    Lombok
    减少TIME_WAIT时间的优化配置
    MySQL Join算法与调优白皮书(一)
    MySQL Join算法与调优白皮书(二)
    MySQL Join算法与调优白皮书(三)
  • 原文地址:https://www.cnblogs.com/galaxyyao/p/1400422.html
Copyright © 2020-2023  润新知