仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 982|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之SQL Server 毗连中四种最多见毛病

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:23:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
php本地模拟的prepare底层就是mysql_real_escape_string,所以必须得用mysql_set_character_set去设置mysql->charset,否则就存在字符集问题。server|毛病一."SQLServer不存在或会见被回绝"

这个是最庞大的,毛病产生的缘故原由对照多,必要反省的方面也对照多.

一样平常说来,有以下几种大概性:

1,SQLServer称号或IP地点拼写有误
2,服务器端收集设置有误
3,客户端收集设置有误

要办理这个成绩,我们一样平常要遵守以下的步骤来一步步找出招致毛病的缘故原由.


=============起首,反省收集物理毗连=============
ping<服务器IP地点/服务器称号>

假如ping<服务器IP地点>不乐成,申明物理毗连有成绩,这时候候要反省
硬件设备,如网卡,HUB,路由器等.
另有一种多是因为客户端和服务器之间安装有防火墙软件酿成的,好比ISAServer.
防火墙软件大概会屏障对ping,telnet等的呼应,因而在反省毗连成绩的时分,我们要先
把防火墙软件临时封闭,大概翻开一切被关闭的端口.

假如ping<服务器IP地点>乐成而,ping<服务器称号>失利
则申明名字剖析有成绩,这时候候要反省DNS服务是不是一般.
偶然候客户端和服务器不在统一个局域网内里,这时候候极可能没法间接利用服务器名
称来标识该服务器,这时候候我们可使用HOSTS文件来举行名字剖析,
详细的办法是:

1.利用记事本翻开HOSTS文件(一样平常情形下位于C:WINNTsystem32driversetc).
增加一条IP地点与服务器称号的对应纪录,如:
172.168.10.24myserver

2.或在SQLServer的客户端收集有用工具内里举行设置,前面会有具体申明.


=============其次,利用telnet命令反省SQLServer服务器事情形态=============
telnet<服务器IP地点>1433

假如命令实行乐成,能够看到屏幕一闪以后光标在左上角一直明灭,这申明SQLServer
服务器事情一般,而且正在监听1433端口的TCP/IP毗连
假如命令前往"没法翻开毗连"的毛病信息,则申明服务器端没有启动SQLServer服务,
也大概服务器端没启用TCP/IP协定,大概服务器端没有在SQLServer默许的端口
1433上监听.


=============接着,我们要到服务器上反省服务器真个收集设置,
反省是不是启用了定名管道.是不是启用了TCP/IP协定等等=============
能够使用SQLServer自带的服务器收集利用工具来举行反省.

点击:程序--MicrosoftSQLServer--服务器收集利用工具

翻开该工具后,在"惯例"中能够看到服务器启用了哪些协定.
一样平常而言,我们启用定名管道和TCP/IP协定.
点中TCP/IP协定,选择"属性",我们能够来反省SQKServer服务默许端
口的设置.一样平常而言,我们利用SQLServer默许的1433端口.假如选中"埋没服务器",则意
味着客户端没法经由过程列举服务器来看到这台服务器,起到了回护的感化,但不影响毗连.


=============接上去我们要到客户端反省客户真个收集设置=============
我们一样能够使用SQLServer自带的客户端收集利用工具来举行反省,
所分歧的是此次是在客户端来运转这个工具.

点击:程序--MicrosoftSQLServer--客户端收集利用工具

翻开该工具后,在"惯例"项中,能够看到客户端启用了哪些协定.
一样平常而言,我们一样必要启用定名管道和TCP/IP协定.
点击TCP/IP协定,选择"属性",能够反省客户端默许毗连端口的设置,该端口必需与服务器分歧.

单击"别号"选项卡,还能够为服务器设置别号.服务器的别号是用来毗连的称号,
毗连参数中的服务器是真实的服务器称号,二者能够不异或分歧.别号的设置与利用HOSTS文
件有类似的地方.


经由过程以上几个方面的反省,基础上能够扫除第一种毛病.


-----------------------------------------------------------------------------

二."没法毗连到服务器,用户xxx上岸失利"

该毛病发生的缘故原由是因为SQLServer利用了"仅Windows"的身份考证体例,
因而用户没法利用SQLServer的登录帐户(如sa)举行毗连.办理办法以下所示:

1.在服务器端利用企业办理器,而且选择"利用Windows身份考证"毗连上SQLServer
在企业办理器中
--右键你的服务器实例(就是谁人有绿色图标的)
--编纂SQLServer注册属性
--选择"利用windows身份考证"

2.睁开"SQLServer组",鼠标右键点击SQLServer服务器的称号,选择"属性",
再选择"平安性"选项卡
3.在"身份考证"下,选择"SQLServer和Windows".
4.从头启动SQLServer服务.

在以上办理办法中,假如在第1步中利用"利用Windows身份考证"毗连
SQLServer失利,那就经由过程修正注册表来办理此成绩:

1.点击"入手下手"-"运转",输出regedit,回车进进注册表编纂器
2.顺次睁开注册表项,扫瞄到以下注册表键:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServer]
3.在屏幕右方找到称号"LoginMode",双击编纂双字节值
4.将原值从1改成2,点击"断定"
5.封闭注册表编纂器
6.从头启动SQLServer服务.

此时,用户能够乐成地利用sa在企业办理器中新建SQLServer注册,
可是仍旧没法利用Windows身份考证形式来毗连SQLServer.
这是由于在SQLServer中有两个缺省的登录帐户:
BUILTINAdministrators
<呆板名>Administrator被删除.
要恢复这两个帐户,可使用以下的办法:

1.翻开企业办理器,睁开服务器组,然后睁开服务器
2.睁开"平安性",右击"登录",然后单击"新建登录"
3.在"称号"框中,输出BUILTINAdministrators
4.在"服务器脚色"选项卡中,选择"SystemAdministrators"
5.点击"断定"加入
6.利用一样办法增加<呆板名>Administrator登录.

申明:

以下注册表键:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerLoginMode
的值决意了SQLServer将接纳何种身份考证形式.
1.暗示利用"Windows身份考证"形式
2.暗示利用夹杂形式(Windows身份考证和SQLServer身份考证).


-------------------------------------------------------------------------

三.提醒毗连超时

假如碰到第三个毛病,一样平常而言暗示客户端已找到了这台服务器,而且能够举行毗连,
不外是因为毗连的工夫年夜于同意的工夫而招致堕落.
这类情形一样平常会产生在当用户在Internet上运转企业办理器来注册别的一台一样在
Internet上的服务器,而且是慢速毗连时,有大概会招致以上的超时毛病.有些情形下,
因为局域网的收集成绩,也会招致如许的毛病.

要办理如许的毛病,能够修正客户真个毗连超时设置.默许情形下,经由过程企业办理器
注册别的一台SQLServer的超时设置是4秒,而查询剖析器是15秒(这也是为何在
企业办理器里产生毛病的大概性对照年夜的缘故原由).

详细步骤为:
企业办理器中的设置:
1.在企业办理器中,选择菜单上的"工具",再选择"选项"
2.在弹出的"SQLServer企业办理器属性"窗口中,点击"初级"选项卡
3.在"毗连设置"下的"登录超时(秒)"右侧的框中输出一个对照年夜的数字,如20.

查询剖析器中的设置:
工具--选项--毗连--将登录超时设置为一个较年夜的数字


---------------------------------------------------------------------------

四.年夜部分机都用Tcp/ip才干乐成,有次我发明用NamedPipes才能够?

这是由于在WINDOWS2000今后的操纵体系中,MS为办理SQLSERVER的平安成绩将
TCP/IP设置为SQLSERVER的默许毗连协定,你能够在CLIENTNETWORKUTILITY中看到
TCP/IP和NAMEPIPE的按次。

你也能够在:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientSuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
看到默许的协定。

2.怎样在程序中变动NamedPipes,Tcp/ip,其sql语句怎样写?
你能够在下面提到的注册表的地位修正:
CLIENT端:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientSuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00

SERVER端:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerSuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00

目前的方案是用mysqlbinlog工具,增加一个Flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 10:09:49 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-28 06:06:43 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
再见西城 该用户已被删除
地板
 楼主| 发表于 2015-2-5 18:57:01 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-13 06:51:30 | 只看该作者
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
精灵巫婆 该用户已被删除
6#
发表于 2015-3-3 18:49:56 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
admin 该用户已被删除
7#
发表于 2015-3-11 12:45:44 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
若天明 该用户已被删除
8#
发表于 2015-3-18 19:09:35 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表