• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

小YSQL ServerB接失″e`及解Q_sqlserver

sqlserver 搞代码 3年前 (2018-06-16) 97次浏览 已收录 0个评论

在使用 SQL Server 的^程中,用粲龅降淖疃嗟}莫^於B接失×恕R话愣裕幸韵煞NB接 SQL Server 的方式,一是利用 SQL Server 自的客舳斯ぞ撸缙I管理器、查分析器、事仗讲槠鞯龋欢抢糜糇约洪_l的客舳顺淌剑ASP _本、VB程式等,客舳顺淌街杏质抢 ODBC 或者 OLE DB 等B接 SQL Server。下面,[email protected],具w如何斫QB接失〉}。

  一、客舳斯ぞ哌B接失

  在使用 SQL Server 自的客舳斯ぞ撸ㄒ云I管理器槔┻B接 SQL Serverr,最常的e`有如下一些:

http://www.gaodaima.com/35689.html小YSQL ServerB接失″e`及解Q_sqlserver

  1、SQL Server 不存在或L被拒^

    ConnectionOpen (Connect())

  小YSQL ServerB接失″e`及解Q

  2、用’sa’登失 T颍何磁c信任 SQL Server B接相P。

  小YSQL ServerB接失″e`及解Q

  3、超r已^期。

   小YSQL ServerB接失″e`及解Q

[email protected]`。

  第一e`”SQL Server 不存在或L被拒^”通常是最}s的,e`l生的原因比^多,需要z查的方面也比^多。一般f恚幸韵N可能性:

  1、SQL Server名Q或IP地址拼有`;

  2、伺服器端W路配置有`;

  3、客舳司W路配置有`。

  要解Q@},我一般要遵循以下的步E硪徊讲秸页е洛e`的原因。

  首先,z查W路物理B接:

   ping <伺服器IP地址>
 
  或者

   ping <伺服器名Q>

  如果 ping <伺服器IP地址> 失。f明物理B接有},@r候要z查硬wO洌缇W卡、HUB、路由器等。有一N可能是由於客舳撕退欧髦g安b有防火w造成的,比如 ISA Server。防火w可能谡 ping、telnet 等的虼嗽z查B接}的r候,我要先把防火wrP],或者打_所有被封]的端口。

  如果ping <伺服器IP地址> 成功而 ping <伺服器名Q> 失。tf明名字解析有},@r候要z查 DNS 服帐欠裾!Sr候客舳撕退欧鞑辉谕局域WY面,@r候很可能o法直接使用伺服器名Q俗R伺服器,@r候我可以使用HOSTS文件磉M行名字解析,具w的方法是:

  1、使用事本打_HOSTS文件(一般情r下位於C:/WINNT/system32/drivers/etc).
‘www.knowsky.com
  2、添加一lIP地址c伺服器名Q的,如:

    172.168.10.24 myserver

  也可以在 SQL Server 的客舳司W路用工具Y面M行配置,後面性f明。

  其次,使用 telnet 命令z查SQL Server伺服器工作B:

   telnet <伺服器IP地址> 1433

  如果命令绦谐晒Γ梢钥吹轿幕一W之後游嗽谧笊辖遣煌i[email protected] SQL Server 伺服器工作正常,K且正在O1433端口的 tcp/IP B接;如果命令返回”o法打_B接”的e`Y,tf明伺服器端]有 SQL Server 服眨部赡芩欧鞫]⒂ TCP/IP fh,或者伺服器端]有在 SQL Server 默J的端口1433上O。

  接著,我要到伺服器上z查伺服器端的W路配置,z查是否⒂昧嗣艿溃欠⒂昧 TCP/IP fh等等。我可以利用 SQL Server 自的伺服器W路使用工具磉M行z查。

  c簦撼淌 -> Microsoft SQL Server -> 伺服器W路使用工具,打_工具後看到的面如下D所示:

  小YSQL ServerB接失″e`及解Q

[email protected],我⒂妹艿酪约 TCP/IP fh。

  c中 TCP/IP fh,x”傩”,我可以z查 SQK Server 服漳J端口的O置,如下D所示:

  小YSQL ServerB接失″e`及解Q

  一般而言,我使用 SQL Server 默J的1433端口。如果x中”[藏伺服器”,t意味著客舳o法通^枚e伺服器砜吹竭@_伺服器,起到了保o的作用,但不影B接。

  z查完了伺服器端的W路配置,接下砦要到客舳z查客舳说木W路配置。我同涌梢岳 SQL Server 自的客舳司W路使用工具磉M行z查,[email protected][email protected]

  c簦撼淌 -> Microsoft SQL Server -> 客舳司W路使用工具, 打_工具後看到的面如下D所示:

  小YSQL ServerB接失″e`及解Q

[email protected],我同有枰⒂妹艿酪约 TCP/IP fh。

  c TCP/IP fh,x”傩”,可以z查客舳四JB接端口的O置,如下D所示。

  小YSQL ServerB接失″e`及解Q

  端口必c伺服器一致。

  ”e名”x卡,可以樗欧髋渲e名。伺服器的e名是用磉B接的名Q,B接抵械乃欧魇钦嬲乃欧髅Q,烧呖梢韵嗤虿煌H缦D中,我可以使用myserver泶嬲嬲乃欧髅Qsql2kcn-02,K且使用W路 Named Pipes。e名的O置c使用HOSTS文件有相似之

  小YSQL ServerB接失″e`及解Q

  通^以上方面的z查,e` 1 l生的原因基本上可以被排除。下面我再描述如何斫Qe` 2。

  用L在查分析器Y面使用sa磉B接SQL Server,或者在企I管理器Y面使用sa硇陆ㄒSQL Server]r,常龅饺D 2 所示的e`Y。e`a生的原因是由於SQL Server使用了”H Windows”的身份C方式,因此用o法使用SQL Server的登簦ㄈ sa )M行B接。解Q方法如下所示:

  1、 在伺服器端使用企I管理器,K且x”使用 Windows 身份C”B接上 SQL Server;

  2、 展_”SQL ServerM”,滑鼠右IcSQL Server伺服器的名Q,x”傩”,再x”安全性”x卡;

  3、 在”身份C”下,x”SQL Server和 Windows “。

  4、 重新SQL Server服铡

  在以上解Q方法中,如果在第 1 步中使用”使用 Windows 身份C”B接 SQL Server 失。屈N我⒂龅揭呻y的境地:首先,伺服器只允S了 Windows 的身份C;其次,即使使用了 Windows [email protected]”自己把自己i在了T外”,因o用何N方式,用艟o法使用M行B接。H上,我可以通^修改一]员礞I值⑸矸蒡C方式改 SQL Server 和 Windows 混合C,步E如下所示:

  1、c”_始”-“/行”,入regedit,回M入]员砭器;

  2、依次展_]员眄,g[到以下]员礞I:

[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer]

  3、在幕右方找到名Q”LoginMode”,p艟p字值;

  4、⒃1改2,c”_定”;

  5、P]]员砭器;

  6、重新SQL Server服铡

  此r,用艨梢猿晒Φ厥褂sa在企I管理器中新建SQL Server]裕侨匀o法使用Windows身份C模式磉B接SQL [email protected] SQL Server 中有缺省的登簦BUILTIN/Administrators 以及 <C器名>/Administrator [email protected]

  1、打_企I管理器,展_伺服器M,然後展_伺服器;

  2、展_”安全性”,右”登”,然後”新建登”;

  3、在”名Q”框中,入 BUILTIN/Administrators;

  4、在”伺服器角色”x卡中,x”System Administrators” ;

  5、c”_定”退出;

  6、使用同臃椒ㄌ砑 <C器名>/Administrator 登。

  以下]员礞I

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer/LoginMode

  的值Q定了SQL Server袢『畏N身份C模式。值1,表示使用Windows 身份C模式;值2,表示使用混合模式(Windows 身份C和 SQL Server 身份C)。

  看完如何解Q前e`的方法之後,我砜匆幌氯D 3 所示的第三e`。

  如果遇到第三e`,一般而言表示客舳艘呀找到了@_伺服器,K且可以M行B接,[email protected]生在用粼Internet上/行企I管理器碓]粤硗庖惶ㄍ釉Internet上的伺服器,K且是慢速B接r,有可能е乱陨系某re`。有些情r下,由於局域W的W路},[email protected]`。

[email protected]`,可以修改客舳说倪B接超rO置。默J情r下,通^企I管理器]粤硗庖惶SQL Server的超rO置是 4 秒,而查分析器是 15 秒(@也是槭颤N在企I管理器Yl生e`的可能性比^大的原因)。具w步E椋

  1、在企I管理器中,x窆δ鼙砩系”工具”,再x”x”;

  2、在出的”SQL Server企I管理器傩”窗口中,c”高”x卡;

  3、在”B接O置”下的”登超r(秒)”右的框中入一比^大的底郑 20。

  查分析器中也可以在同游恢眠M行O置。

 二、贸淌竭B接失

  以上的三Ne`Y都是l生在 SQL Server 自的客舳斯ぞ咧校贸淌街形也龅筋似的e`Y,例如:

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’ 登失 T: 未c信任 SQL Server B接相P。

Microsoft OLE DB Provider for ODBC Drivers e` ‘80004005’.
[Microsoft][ODBC SQL Server Driver]超r已^期.

  首先,我碓看以下的示意D砹私庖幌率褂 ODBC 和使用 OLE DB B接 SQL Server 有什N不同之

  小YSQL ServerB接失″e`及解Q

  上D中,我可以看出在H使用中,贸淌建和使用各N ADO ο螅ADO ο罂蚣苷{用享用的 OLE DB 提供者。榱嗽L SQL Server ,OLE DB 提供了煞N不同的方法:用於 SQL Server 的 OLE DB 提供者以及用於 ODBC 的 OLE DB [email protected],实倪B接字符串法如下所示:

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

  使用 SQL Server 身份C:

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

  使用 Windows 身份C(信任B接):

oConn.Open “Provider=sqloledb;” & _
“Data Source=myServerName;” & _
“Initial Catalog=myDatabaseName;” & _
“Integrated Security=SSPI”

  2、使用用於 ODBC 的 OLE DB 提供者(不使用 ODBC 矗

  使用 SQL Server 身份C:

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

  使用 Windows 身份C(信任B接):

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”

  如果遇到B接失〉那r,我只要按照一中所示的方法,Y合程式中的B接字符串M行z查,基本都能得到解Q。另外,有以下要注意的地方:

  1、配置 ODBC r,c”客舳”配置x可以我指定B接使用的W路、端口等傩裕缦D所示:

  小YSQL ServerB接失″e`及解Q

  2、如果遇到B接超r的e`,我可以在程式中修改 Connection ο蟮某rO置,再打_B接。例如:

<%
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、如果遇到查超r的e`,我可以在程式中修改 Recordset ο蟮某rO置,再打_Y果集。例如:

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
‘同右悦挝唬绻O置 0 表示o限制
rs.Open cmd1, cn
rs.MoveFirst
. . .

  三、小Y

  本文Υ蟛糠钟粼谑褂 SQL Server ^程中常的B接失〉腻e`,重c了在使用 SQL Server 客舳斯ぞ咭约坝糸_l的贸淌煞N情r下,如何/K解QB接失〉腻e`。看^本文以後,相信每一x者都 SQL Server 的B接工作原理、身份C方式以及贸淌介_l等有一^槿娑钊氲倪B接。本文中所有的y或者示例均在 Windows 2000 Advanced Server + SQL Server 2000 企I版上通^。

欢迎大家阅读《小YSQL ServerB接失″e`及解Q_sqlserver》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址