“SQL Server不存在或访问被拒绝”问题的解决
最近做一个项【yī gè xiàng】目【mù】(Asp.net+Sql Server 2000),在原来🚤开发的🏰机器上运行没有任何问题.但当我🎀在另外【zài lìng wài】一台机器上调【qì shàng diào】试【shì】程序😠(本机调试【shì】📫)的时候🚑,总出现“SQL Server不存在或访问【huò fǎng wèn】被拒绝”。相信在【xiàng xìn zài】👭任何一【rèn hé yī】个搜索网站输🚚入这样的检索词,一定会获得【huò dé】n多的页【duō de yè】🔂面🥀。
总结起来的关🖍于SQL Server连接中此类四个最常【gè zuì cháng】见错误错误解【cuò wù jiě】决方案【jué fāng àn】🗣如下💔:
一👾."SQL Server 不存在【bú cún zài】或访问【huò fǎng wèn】被拒绝👶"
这个是【zhè gè shì】💼最复杂的,错误发生的原【shēng de yuán】因比较🍋多👐,需要检查的方面也比【miàn yě bǐ】较多【jiào duō】👬.
一般说来,有以下几种可能性:
1,SQL Server名称或IP地址拼【dì zhǐ pīn】🥇写有误【wù】
2,服务器端网络【duān wǎng luò】😋配置有误【wù】👴
3,客户端网络【duān wǎng luò】😋配置有误【wù】👴
要解决🌭这个问🔕题【tí】,我们一【wǒ men yī】般要遵循以下【xún yǐ xià】👃的步骤【de bù zhòu】来一步步找出导致错误的原⏫因.
============= 首先🙋,检查网络物理【luò wù lǐ】连接【lián jiē】🌋 =============
ping <服务器【fú wù qì】💗IP地址/服务器【fú wù qì】💗名称>
如果【rú guǒ】 ping <服务器IP地址> 不成功,说明物理连接【lǐ lián jiē】🦁有问题,这时候要检查硬件设【yìng jiàn shè】🍗备,如网卡,HUB,路由器【lù yóu qì】等.
还有一🌿种可能【zhǒng kě néng】是由于【shì yóu yú】客户端和服务【hé fú wù】🦎器之间【qì zhī jiān】安装有🚦防火墙【fáng huǒ qiáng】💉软件造成的,比如 ISA Server.防火墙【fáng huǒ qiáng】💉软件可【ruǎn jiàn kě】🎎能会屏🏙蔽对 ping,telnet 等的响【děng de xiǎng】🔷应
因此在检查连【jiǎn chá lián】接问题的时候🕌,我们要先把防【xiān bǎ fáng】火墙💉软件暂【ruǎn jiàn zàn】时关闭👠,或者打开所有➗被封闭📍的端口.
如果【rú guǒ】🏄ping <服务器🐕IP地址> 成功而【chéng gōng ér】,ping <服务器🐕名称【míng chēng】🐵> 失败【shī bài】
则说明【zé shuō míng】名字解🚔析有问【xī yǒu wèn】题,这时候要检查 DNS 服务是否正常.
有时候客户端和服务【hé fú wù】器🐕不在同【bú zài tóng】一个局域网【yù wǎng】🧖里面【lǐ miàn】,这时候很可能无法直⬜接使用【jiē shǐ yòng】📴服务器🐕名称【míng chēng】🐵来标识该👀服务器🐕,这时候我们可以使用HOSTS文件来进行名🌳字解析,
具体的🆘方法是【fāng fǎ shì】:
1.使用记事本打开【kāi】🦈HOSTS文件【wén jiàn】(一般情况下位【kuàng xià wèi】于⬅C:\WINNT\system32\drivers\etc).
添加一🗓条IP地址与服务器🏹名称的【míng chēng de】对应记【duì yīng jì】录,如😧:
172.168.10.24 myserver
2.或在 SQL Server 的客户端网络【duān wǎng luò】💊实用工【shí yòng gōng】具里面进行配置🆓,后面会有详细【yǒu xiáng xì】📉说明.
============= 其次,使用【shǐ yòng】 telnet 命令检查SQL Server服务器【fú wù qì】🎟工作状【gōng zuò zhuàng】态🧑 =============
telnet <服务器【fú wù qì】🎟IP地址> 1433
如果命👅令执行成功【chéng gōng】,可以看到屏幕一闪之【yī shǎn zhī】后光标在左上角不停闪动,这说明 SQL Server 服务器【fú wù qì】🚎工作正常,并且正在监听1433端口【duān kǒu】㊙的 TCP/IP 连接
如果命👅令返回"无法打【wú fǎ dǎ】🎣开连接"的错误信息【xìn xī】🎴,则说明【zé shuō míng】服务器【fú wù qì】🚎端没有启动 SQL Server 服务【fú wù】😃,
也可能【yě kě néng】服务器【fú wù qì】🚎端没启【duān méi qǐ】用👨 TCP/IP 协议🏙,或者服【huò zhě fú】🔭务器端【wù qì duān】📋没有在🔓 SQL Server 默认的端口【duān kǒu】㊙1433上监听🍴.
=============接着【jiē zhe】🏝,我们要到服务器上检✍查【chá】服务⏸器端的网络配置💺,检查【chá】是否启用【yòng】👦了命名管道.是否启用【yòng】👦了 TCP/IP 协议等【xié yì děng】👭等 =============
可以利【kě yǐ lì】用【yòng】👦 SQL Server 自带的【zì dài de】🖥服务器网络使🌯用【yòng】👦工具来【gōng jù lái】进行检【jìn háng jiǎn】查【chá】.
点击【diǎn jī】:程序 -- Microsoft SQL Server -- 服务器【fú wù qì】🐷网络使🌒用工具
打开该工具后,在"常规"中【zhōng】💢可以看到服🧗务器启用了哪些协议【xiē xié yì】🚣.
一般而【yī bān ér】📭言🗝,我们启用命名管道以【guǎn dào yǐ】及【jí】♊ TCP/IP 协议🚣.
点中【zhōng】💢 TCP/IP 协议🚣,选择"属性【shǔ xìng】🚀",我们可以来检查 SQK Server 服务默【fú wù mò】认端口的设置
一般而【yī bān ér】📭言🗝,我们使【wǒ men shǐ】⛩用 SQL Server 默认的🍷1433端口.如果选【rú guǒ xuǎn】中【zhōng】💢"隐藏服【yǐn cáng fú】务器🍽",则意味着客户【zhe kè hù】🏣端无法【duān wú fǎ】通过枚😎举服务🥦器来看【qì lái kàn】到这台👲服务器【fú wù qì】🍽,起到了保护的🦉作用【zuò yòng】,但不影响连接.
============= 接下来我们要到客户🍢端检查【duān jiǎn chá】🙈客户端【kè hù duān】♏的网络【de wǎng luò】配置 =============
我们同样可以♋利用🍘 SQL Server 自带的【zì dài de】🥕客户端【kè hù duān】♏网络使用工具【jù】来进行检查【jiǎn chá】🙈,
所不同【suǒ bú tóng】📗的是这次是在客户端【kè hù duān】♏来运行这个工具【jù】.
点击【diǎn jī】:程序 -- Microsoft SQL Server -- 客户端网络使【wǎng luò shǐ】🦂用工具⛅
打开该工具后🐤,在"常规"项中,可以看🧥到客户🔋端启用【duān qǐ yòng】了哪些🍽协议【xié yì】🎫.
一般而言,我们同【wǒ men tóng】样需要启用命🐣名管道以及👟 TCP/IP 协议【xié yì】🎫.
点击 TCP/IP 协议【xié yì】🎫,选择【xuǎn zé】"属性",可以检【kě yǐ jiǎn】查客户【chá kè hù】🏋端默认【duān mò rèn】连接端【lián jiē duān】💘口的设置,该端口【gāi duān kǒu】必须与服务器【fú wù qì】一致.
单击【dān jī】"别名🚥"选项卡,还可以【hái kě yǐ】为服务【wéi fú wù】器🍈配置别名🚥.服务器🍈的别名✡是用来【shì yòng lái】连接的名称🥁,
连接参数中的服务😻器是真正📉的服务😻器名称🥁,两者可【liǎng zhě kě】以相同或不同【huò bú tóng】.别名🚥的设置【de shè zhì】与使用HOSTS文件有【wén jiàn yǒu】😌相似之【xiàng sì zhī】处🆓.
通过以上几个方面的【fāng miàn de】🗒检查🔌,基本上【jī běn shàng】➡可以排【kě yǐ pái】除第一种错误.
二【èr】."无法连接到服【jiē dào fú】务器👣,用户【yòng hù】👝xxx登陆失败⛏"
该错误【gāi cuò wù】产生的【chǎn shēng de】👷原因是由于【yóu yú】😲SQL Server使用了"仅🔱 Windows"的身份验证方式,
因此用户无法【hù wú fǎ】🚖使用SQL Server的登录🍁帐户【zhàng hù】(如 sa )进行连接.解决方【jiě jué fāng】法如下所示🎲:
1.在服务【fú wù】🛌器端使用企业管理器,并且选【bìng qiě xuǎn】择😻"使用 Windows 身份验证【zhèng】📯"连接上【lián jiē shàng】 SQL Server
2.展开🕟"SQL Server组🔌",鼠标右键点击【jiàn diǎn jī】🐠SQL Server服务【fú wù】器的名称【de míng chēng】,选择【xuǎn zé】😻"属性【shǔ xìng】",再选择【zài xuǎn zé】💜"安全性"选项卡
3.在"身份验证【zhèng】📯"下,选择【xuǎn zé】😻"SQL Server和 Windows ".
4.重新启♈动SQL Server服务【fú wù】.
在以上【zài yǐ shàng】解决方法中🗝,如果在第【dì】 1 步中使用【shǐ yòng】💥"使用【shǐ yòng】💥 Windows 身份验证👱"连接💌 SQL Server 失败,
那就通【nà jiù tōng】🕢过修改【guò xiū gǎi】注册表【zhù cè biǎo】来解决😶此问题:
1.点击【diǎn jī】"开始【kāi shǐ】"-"运行🚢",输入regedit,回车进【huí chē jìn】入注册表编辑【biǎo biān jí】器
2.依次展【yī cì zhǎn】🔓开注册🗽表项🤓,浏览到以下注册表键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
3.在屏幕【zài píng mù】😾右方找⛪到名称【dào míng chēng】"LoginMode",双击编【shuāng jī biān】辑双字节值
4.将原值🤬从🏆1改为2,点击【diǎn jī】"确定"
5.关闭注🔍册表编辑【biǎo biān jí】器
6.重新启【chóng xīn qǐ】动SQL Server服务😀.
此时,用户可🌠以成功地使用sa在企业【zài qǐ yè】管理器【guǎn lǐ qì】中新建【zhōng xīn jiàn】SQL Server注册【zhù cè】,
但是仍【dàn shì réng】然无法🐿使用Windows身份验【shēn fèn yàn】证模式🍙来连接SQL Server.
这是因为在 SQL Server 中有两个缺省的登录【de dēng lù】帐户😳:
BUILTIN\Administrators
<机器名🥜>\Administrator 被删除🎣.
要恢复🔯这两个👓帐户😳,可以使【kě yǐ shǐ】用以下【yòng yǐ xià】的方法🐦:
1.打开企业管理【yè guǎn lǐ】器【qì】🛷,展开服🌪务器【qì】🛷组,然后展🐥开服务器【fú wù qì】🛷
2.展开"安全性【ān quán xìng】",右击🛑"登录【dēng lù】🍋",然后单【rán hòu dān】击🛑"新建登【xīn jiàn dēng】录🍋"
3.在🤕"名称"框中,输入【shū rù】 BUILTIN\Administrators
4.在🤕"服务器【fú wù qì】🛷角色"选项卡【xuǎn xiàng kǎ】中,选择【xuǎn zé】"System Administrators"
5.点击🛑"确定🕺"退出🏼
6.使用同【shǐ yòng tóng】🏯样方法添加 <机器【qì】🛷名>\Administrator 登录【dēng lù】🍋.
说明:
以下注【yǐ xià zhù】册表键♉:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
的值决🕠定了【dìng le】SQL Server将采取何种身【hé zhǒng shēn】🚊份验证【fèn yàn zhèng】模式😶.
1.表示使用"Windows 身份验【shēn fèn yàn】👫证"模式😶
2.表示使用混合【yòng hún hé】模式😶(Windows 身份验【shēn fèn yàn】👫证和 SQL Server 身份验【shēn fèn yàn】👫证).
三.提示连接超时
如果遇到第三【dào dì sān】个错🍚误🥇,一般而言表示客户端已经找【yǐ jīng zhǎo】🌃到了这台服务器【wù qì】🥀,并且可【bìng qiě kě】以进行连接【lián jiē】👓,
不过是【bú guò shì】由于连【yóu yú lián】接【jiē】👓的时间【de shí jiān】大于允许的时【xǔ de shí】间而【jiān ér】🈁导致出错🍚.
这种情【zhè zhǒng qíng】况一般会发生在【zài】当用户在【hù zài】Internet上运行企业管🚫理器【qì】🥀来注册另外一【lìng wài yī】台同样在【zài】Internet上的服务器【wù qì】🥀,
并且是😛慢速连接【lián jiē】👓时,有可能🛂会导致😷以上的【yǐ shàng de】⏸超时错🤖误🥇.有些情🚛况下【kuàng xià】,由于局🔊域网的网络问🔞题📁,也会导致😷这样的错🍚误🥇.
要解决这样的【zhè yàng de】💃错误,可以修【kě yǐ xiū】改客户💈端的连♐接超时【jiē chāo shí】设置.
默认情【mò rèn qíng】况下,通过企🆗业管理【yè guǎn lǐ】器注册另外一台SQL Server的超时⛺设置是🧘 4 秒【miǎo】🆎,
而查询分析器【fèn xī qì】📍是💓 15 秒【miǎo】🆎(这也是💓为什么在企业【zài qǐ yè】管理器【guǎn lǐ qì】里发生错误的可能性🍽比较大的原因【de yuán yīn】).
具体步骤为:
企业管【qǐ yè guǎn】理器中【zhōng】⬜的【de】设置🚪:
1.在企业【zài qǐ yè】管理器【guǎn lǐ qì】中【zhōng】⬜,选择菜🦈单上的【de】🚫"工具【gōng jù】",再选择🍚"选项"
2.在弹出的【de】🍏"SQL Server企业管【qǐ yè guǎn】理器属性【xìng】"窗口中【zhōng】⬜,点击"高级"选项卡⚾
3.在"连接设⌛置"下的【de】🍏"登录超【dēng lù chāo】时【shí】(秒【miǎo】)"右边的【de】🏪框中【zhōng】⬜输入一个比较大🚊的【de】🍏数字,如【rú】 20.
查询分🍳析器中【xī qì zhōng】😞的设置【de shè zhì】🛤:
工具 -- 选项 -- 连接【lián jiē】 -- 将登录超时设置为一【zhì wéi yī】㊙个较大的数字
四.大部分机都用【jī dōu yòng】Tcp/ip才能成【cái néng chéng】🔦功😴,有次我【yǒu cì wǒ】发现用Named Pipes才可以🕰?
这是因为在【zài】🛁windows 2000以后的操作系💶统中【tǒng zhōng】,MS为解决【wéi jiě jué】😺SQL SERVER的安全问题将🦔TCP/IP配置
为SQLSERVER的默认连接协议【yì】🚼,你可以在【zài】CLIENT NETWORK UTILITY中看到🤧TCP/IP和【hé】NAME PIPE
的顺序【de shùn xù】。
你也可👘以在【yǐ zài】:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
看到默认的协议【yì】🙃。
2.怎么在【zěn me zài】程序中更改Named Pipes , Tcp/ip ,其sql语句怎【yǔ jù zěn】么写?
你可以😣在上面提到的注册表【zhù cè biǎo】🧜的位置修改🧗:
CLIENT端【duān】🔪:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
SERVER端【duān】🌽:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
我的问题应该【tí yīng gāi】✅属于第一类【yī lèi】,遗憾的是【shì】我按照上面说的方【shuō de fāng】🚑法都不【fǎ dōu bú】能解决这个问题。我使用【wǒ shǐ yòng】:telnet <服务器【fú wù qì】IP地址🤶> 1433 显示不能正确连接【què lián jiē】🍙。按照说的方【shuō de fāng】🚑法也不能解决这个问题。有网友👡说出现1433端口不🅰能连接🌃的因为是【shì】Sql Server 2000没有打补丁的【bǔ dīng de】缘故🎌,但我打【dàn wǒ dǎ】🚃过sp4后仍然➿不能正确连接【què lián jiē】🍙1433端口。
我在web.config里的设【lǐ de shè】🔹置为【zhì wéi】:
<configuration>
<appSettings>
<!--"data source=SASANK;initial catalog=CODER;persist security info=False;user id=sa;workstation id=SASANK;packet size=4096"-->
<add key="ConnectionString" value=
关键词🈳:SQL,Server
阅读本文后您有什么感想? 已有 人给出评价!
- 2
- 2
- 2
- 2
- 2
- 2