海妖 发表于 2015-1-16 22:23:14

MSSQL编程:SQL Server毗连中的四个最多见毛病

根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。server|毛病SQLServer毗连中的四个最多见毛病:
一."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身份考证"
--选择"利用SQLServer身份考证"
--登录名输出:sa,暗码输出sa的暗码
--断定
2.设置同意SQLServer身份登录
操纵步骤:
在企业办理器中
--睁开"SQLServer组",鼠标右键点击SQLServer服务器的称号
--选择"属性"
--再选择"平安性"选项卡
--在"身份考证"下,选择"SQLServer和Windows".
--断定,偏重新启动SQLServer服务.
在以上办理办法中,假如在第1步中利用"利用Windows身份考证"毗连SQLServer失利,
那就经由过程修正注册表来办理此成绩:
1.点击"入手下手"-"运转",输出regedit,回车进进注册表编纂器
2.顺次睁开注册表项,扫瞄到以下注册表键:

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才能够?
复兴人:leimin(黄山光亮顶)
这是由于在WINDOWS2000今后的操纵体系中,MS为办理SQLSERVER的平安成绩将TCP/IP设置
为SQLSERVER的默许毗连协定,你能够在CLIENTNETWORKUTILITY中看到TCP/IP和NAMEPIPE
的按次。
你也能够在:

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

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

"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00

使为了数据安全,我们搭建了主从。但实时主从备份只能防止硬件问题,比如主库的硬盘损坏。但对于误操作,则无能为力。比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新。

第二个灵魂 发表于 2015-1-19 09:58:45

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

仓酷云 发表于 2015-1-26 19:37:16

你可以简单地认为适合的就是好,不适合就是不好。

冷月葬花魂 发表于 2015-2-4 20:41:49

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

谁可相欹 发表于 2015-2-10 08:48:48

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。

海妖 发表于 2015-3-1 07:38:47

也可谈一下你是怎么优化存储过程的?

再现理想 发表于 2015-3-10 12:57:05

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

admin 发表于 2015-3-17 07:50:54

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

山那边是海 发表于 2015-3-24 02:59:30

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
页: [1]
查看完整版本: MSSQL编程:SQL Server毗连中的四个最多见毛病