操作系统因SQL2000数据库1433端口引起中毒的解决办法
最近,很多使用管理软件的过程中都会因为SQL2000数据库端口问题引起操作系统中毒,造成诸多麻烦,令人无比头疼。
我从事管理软件技术工作已有5年有余,这样的问题确实让我“一个头两个大”,伤透了脑筋,但是作为管理软件使用者的后盾,我不能眼看问题摆在面前,我却不去面对。找到解决的办法才是硬道理,这才是作为一个从事管理软件技术支持的职责。
经过这段时间的努力,我找到了一个关于这方面问题的解决办法,供大家参考,如果有不妥的地方,或是有更好的处理办法,希望能在我们公司的网站下面的“意见反馈”中,给我们留言,不断完善,使遇到同样问题的用户能够更加快捷地解决问题,让风险降低。资源共享,一起成长。
首先,你在软件操作或系统维护的工程中,发现电脑上的安全软件提示有关SQL2000数据库相关安全警告的时候,你就要注意了,特别是频繁出现这样的安全警告。首先你要拔掉网线,看在C盘下可能已经有一些不明的可执行的应用程序,exe文件,如果没有算你发现及时。有的话立刻永久性删除,然后关闭远程桌面相关设置,在用户组下面删除奇怪可疑的用户名,并对administrator管理员重新设置密码。进行杀毒,谨记:对电脑上重要的文件数据、表格、文档、图片进行备份,用移动设备拷贝一份。同时准备一张带Windowns系统密码清除工具的系统启动光盘备用。重新启动电脑时如发现系统登录界面有好几个登录账户,我敢确定,你中奖了,深表同情。用系统密码清除工具清空所有的系统用户登录密码,用administrator账户登录以后删除多余的账户,继续杀毒,记得不要插网线。检查SQL2000数据库能不能正常使用,建议为SA账户设置一个强密码,这还不够。
你这台电脑上只是一套单机版的管理软件,你最好关闭1433和1434端口,具体操作看下面,如果是一套远程网络版的软件系统,建议重新安装Server服务器系统。如果你关闭了1433和1434端口的话,那就有麻烦了,因为它们自己就是靠这个通信的。比如你使用了SQL2000支持的竞驰管理软件,软件必须通过你指定的那个端口去通信,如果不给他端口,就相当于不给他与电脑数据库通信的路一样,没了路你怎么过去拿东西放东西?
非要关闭1433,那就改成别的端口,不过这个在已经有很多软件在使用SQL数据库的情况下不要轻易该端口,搞不好软件不能用,数据也容易造成传输错误的损坏。如果SA账户不能设置密码的话,建议重新安装数据库程序并安装SP4补丁程序。
关闭1433端口操作如下:
一.创建IP筛选器和筛选器操作
1."开始"->"程序"->"管理工具"->"本地安全策略"。微软建议使用本地安全策略进行IPsec的设置,因为本地安全策略只应用到本地计算机上,而通常ipsec都是针对某台计算机量身定作的。
2.右击"Ip安全策略,在本地机器",选择"管理 IP 筛选器表和筛选器操作",启动管理 IP 筛选器表和筛选器操作对话框。我们要先创建一个IP筛选器和相关操作才能够建立一个相应的IPsec安全策略。
3.在"管理 IP 筛选器表"中,按"添加"按钮建立新的IP筛选器:
1)在跳出的IP筛选器列表对话框内,填上合适的名称,我们这儿使用"tcp1433",描述随便填写.单击右侧的"添加"按钮,启动IP筛选器向导。
2)跳过欢迎对话框,下一步。
3)在IP通信源页面,源地方选"任何IP地址",因为我们要阻止传入的访问。下一步。
4)在IP通信目标页面,目标地址选"我的IP地址"。下一步。
5)在IP协议类型页面,选择"TCP"。下一步。
6)在IP协议端口页面,选择"到此端口"并设置为"1433",其它不变。下一步。
7)完成。关闭IP筛选器列表对话框。会发现tcp1433IP筛选器出现在IP筛选器列表中。
4.选择"管理筛选器操作"标签,创建一个拒绝操作:
1)单击"添加"按钮,启动"筛选器操作向导",跳过欢迎页面,下一步。
2)在筛选器操作名称页面,填写名称,这儿填写"拒绝"。下一步。
3)在筛选器操作常规选项页面,将行为设置为"阻止"。下一步。
4)完成。
5.关闭"管理 IP 筛选器表和筛选器操作"对话框。
二.创建IP安全策略
1.右击"Ip安全策略,在本地机器",选择"创建IP安全策略",启动IP安全策略向导。跳过欢迎页面,下一步。
2.在IP安全策略名称页面,填写合适的IP安全策略名称,这儿我们可以填写"拒绝对tcp1433端口的访问",描述可以随便填写。下一步。
3.在安全通信要求页面,不选择"激活默认响应规则"。下一步。
4.在完成页面,选择"编辑属性"。完成。
5.在"拒绝对tcp1433端口的访问属性"对话框中进行设置。首先设置规则:
1)单击下面的"添加 "按钮,启动安全规则向导。跳过欢迎页面,下一步。
2)在隧道终结点页面,选择默认的"此规则不指定隧道"。下一步。
3)在网络类型页面,选择默认的"所有网络连接"。下一步。
4)在身份验证方法页面,选择默认的"windows 2000默认值(Kerberos V5 协议)"。下一步。
5)在IP筛选器列表页面选择我们刚才建立的"tcp1433"筛选器。下一步。
6)在筛选器操作页面,选择我们刚才建立的"拒绝"操作。下一步。
7)在完成页面,不选择"编辑属性",确定。
6.关闭"拒绝对tcp1433端口的访问属性"对话框。
三.指派和应用IPsec安全策略
1.缺省情况下,任何IPsec安全策略都未被指派。首先我们要对新建立的安全策略进行指派。在本地安全策略MMC中,右击我们刚刚建立的""拒绝对tcp1433端口的访问属性"安全策略,选择"指派"。
2.立即刷新组策略。使用"secedit /refreshpolicy machine_policy"命令可立即刷新组策略.
==============================================
sqlserver2000无法打开1433端口
那就通过修改注册表来解决此问题:
1.点击"开始"-"运行",输入regedit,回车进入注册表编辑器
2.依次展开注册表项,浏览到以下注册表键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
3.在屏幕右方找到名称"LoginMode",双击编辑双字节值
4.将原值从1改为2,点击"确定"
5.关闭注册表编辑器
6.重新启动SQL Server服务.
此时,用户可以成功地使用sa在企业管理器中新建SQL Server注册,
但是仍然无法使用Windows身份验证模式来连接SQL Server.
这是因为在 SQL Server 中有两个缺省的登录帐户:
BUILTIN\Administrators
<机器名>\Administrator 被删除.
要恢复这两个帐户,可以使用以下的方法:
1.打开企业管理器,展开服务器组,然后展开服务器
2.展开"安全性",右击"登录",然后单击"新建登录"
3.在"名称"框中,输入 BUILTIN\Administrators
4.在"服务器角色"选项卡中,选择"System Administrators"
5.点击"确定"退出
6.使用同样方法添加 <机器名>\Administrator 登录.
说明:
以下注册表键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
的值决定了SQL Server将采取何种身份验证模式.
1.表示使用"Windows 身份验证"模式
2.表示使用混合模式(Windows 身份验证和 SQL Server 身份验证).
----------------------------------------------------------------------------
提示连接超时
如果遇到第三个错误,一般而言表示客户端已经找到了这台服务器,并且可以进行连接,
不过是由于连接的时间大于允许的时间而导致出错.
这种情况一般会发生在当用户在Internet上运行企业管理器来注册另外一台同样在Internet上的服务器,
并且是慢速连接时,有可能会导致以上的超时错误.有些情况下,由于局域网的网络问题,也会导致这样的错误.
要解决这样的错误,可以修改客户端的连接超时设置.
默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,
而查询分析器是 15 秒(这也是为什么在企业管理器里发生错误的可能性比较大的原因).
具体步骤为:
企业管理器中的设置:
1.在企业管理器中,选择菜单上的"工具",再选择"选项"
2.在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡
3.在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 20.
查询分析器中的设置:
工具 -- 选项 -- 连接 -- 将登录超时设置为一个较大的数字
大部分机都用Tcp/ip才能成功,有次我发现用Named Pipes才可以?
这是因为在WINDOWS 2000以后的操作系统中,MS为解决SQL SERVER的安全问题将TCP/IP配置
为SQLSERVER的默认连接协议,你可以在CLIENT NETWORK UTILITY中看到TCP/IP和NAME PIPE
的顺序。
你也可以在:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
看到默认的协议。
2.怎么在程序中更改Named Pipes , Tcp/ip ,其sql语句怎么写?
你可以在上面提到的注册表的位置修改:
CLIENT端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
SERVER端:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib]
"ProtocolOrder"=hex(7):74,00,63,00,70,00,00,00,00,00
SQL中,连接的配置就这两个方面
SQL Server服务器--开始--程序--Microsoft SQL Server
--服务器网络实用工具
--启用 WinSock代理
--代理地址:(sqlserver服务器IP)
--代理端口--1433
---确定
客户端
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号