在使用 SQL Server 的^程中,用粲龅降淖疃嗟}莫^於B接失×恕R话愣裕幸韵煞NB接 SQL Server 的方式,一是利用 SQL Server 自的客舳斯ぞ撸缙I管理器、查分析器、事仗讲槠鞯龋欢抢糜糇约洪_l的客舳顺淌剑ASP _本、VB程式等,客舳顺淌街杏质抢 ODBC 或者 OLE DB 等B接 SQL Server。下面,我⒕瓦@煞NB接方式,具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())
2、用’sa’登失 T颍何磁c信任 SQL Server B接相P。
3、超r已^期。
下面我依次介B如何斫Q@三最常的B接e`。
第一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之後游嗽谧笊辖遣煌iW樱@f明 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所示:
@e我可以看到伺服器⒂昧四男fh。一般而言,我⒂妹艿酪约 TCP/IP fh。
c中 TCP/IP fh,x”傩”,我可以z查 SQK Server 服漳J端口的O置,如下D所示:
一般而言,我使用 SQL Server 默J的1433端口。如果x中”[藏伺服器”,t意味著客舳o法通^枚e伺服器砜吹竭@_伺服器,起到了保o的作用,但不影B接。
z查完了伺服器端的W路配置,接下砦要到客舳z查客舳说木W路配置。我同涌梢岳 SQL Server 自的客舳司W路使用工具磉M行z查,所不同的是@次是在客舳磉/行@工具。
c簦撼淌 -> Microsoft SQL Server -> 客舳司W路使用工具, 打_工具後看到的面如下D所示:
@e我可以看到客舳⒂昧四男fh。一般而言,我同有枰⒂妹艿酪约 TCP/IP fh。
c TCP/IP fh,x”傩”,可以z查客舳四JB接端口的O置,如下D所示。
端口必c伺服器一致。
”e名”x卡,可以樗欧髋渲e名。伺服器的e名是用磉B接的名Q,B接抵械乃欧魇钦嬲乃欧髅Q,烧呖梢韵嗤虿煌H缦D中,我可以使用myserver泶嬲嬲乃欧髅Qsql2kcn-02,K且使用W路 Named Pipes。e名的O置c使用HOSTS文件有相似之
通^以上方面的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 身份C仍然o法B接上伺服器。@N情形被形象地Q之”自己把自己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 Server。@是因樵 SQL Server 中有缺省的登簦BUILTIN/Administrators 以及 <C器名>/Administrator 被h除。要恢@簦梢允褂靡韵碌姆椒ǎ
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接,不^是由於B接的rg大於允S的rg而е鲁鲥e。@N情r一般l生在用粼Internet上/行企I管理器碓]粤硗庖惶ㄍ釉Internet上的伺服器,K且是慢速B接r,有可能е乱陨系某re`。有些情r下,由於局域W的W路},也е逻@拥腻e`。
要解Q@拥腻e`,可以修改客舳说倪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不同之
上D中,我可以看出在H使用中,贸淌建和使用各N ADO ο螅ADO ο罂蚣苷{用享用的 OLE DB 提供者。榱嗽L SQL Server ,OLE DB 提供了煞N不同的方法:用於 SQL Server 的 OLE DB 提供者以及用於 ODBC 的 OLE DB 提供者。@煞N不同的方法煞N不同的B接字符串,实倪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所示:
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 搞代码