服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 5912|回复: 3

在连接到SQL Server2005时,在默认的设置下SQL Server不允许进行远程连接可能会导致此

[复制链接]
dirtysea 发表于 2011-10-18 14:21:16 | 显示全部楼层 |阅读模式
Sql Server2005 ,我们远程连接无法连接上的用这3步就可以了
1.在"外围配置"工具把"允许TCP/IP和命名管道"勾上,当然"仅TCP/IP"也可以


                                      图1:外围应用配置器中选择TCP/IP或者named pipes;

       其中named pipes就是类似进程间通讯用的东西,(说错了请大家指正)可以单独选择'仅选择TCP/IP';
   
2.然后从"配置管理器"中找到"...2005网络配置"->"网络协议"->"TCP/IP"查看里面的端口号,默认是1433,可以改成自己喜欢的.


                                 图2:找到系统默认对应的TCP端口号,可以修改成自己喜欢的
  
3.在相应的防火墙新增个例外,比如默认的1433这样就可以远程连接了.

图3:在相应防火墙中新增一个在'第二步'中设置的TCP端口号,这里以XP系统自带的防火墙为例

     通过以上三步就可以了...刚开始自己也是一头雾水,不过SQL Server2005弹出的错误提示可以有很大的帮助.
     ps:这算是自己的第一篇技术小结吧...呃,发现写这个刚开始没有经验在排版布局方面发了好多时间的...加油.
 楼主| dirtysea 发表于 2011-10-18 14:54:20 | 显示全部楼层
错误:连接到SQL Server2005 sa登录失败 错误18456   
问题原因:
升级Sql2000的DTS包是这次数据库系统整体升级的一部分。除此之外,系统硬件进行了升级,新升级的系统服务器加入到了用户机构的域中,并更改了数据库sa的用户口令。
原DTS的数据包是保存了原Sql2000数据库库系统的用户凭据,口令自然是原先的数据库口令。在试运行DTS包之前服务器管理员刚刚把新升级成功的数据库服务器加入域。
用户机构的域是设置了“密码策略”。Sql Server 2005的sa用户默认是启用了“强制实施密码策略”。而一般默认的Windows帐户密码策略或者AD(域帐户)密码策略都是3-6次错误口令登陆失败后,系统暂时冻结该用户。冻结的时间要看系统设定的长短。
该问题就出在DTS用错误的sa口令(旧的sa口令)多次试图访问系统,而sa的“强制实施密码策略”起了作用。


解决办法:
取消“强制实施密码策略”。
清除“登录以锁定”
重设密码
重启sqlserver
OK
 楼主| dirtysea 发表于 2012-11-4 17:07:07 | 显示全部楼层
SQL Server 2005 sa 用户被锁定的问题

问题一:无法使用sa用户登录,提示:“登录失败”,也没有进一步的说明了。。。
问题二:用Windows账户能够登录“对象资源管理器”,但无法打开sa用户的属性,提示:“属性IsLocked不可用于登录"[sa].该对像可能没有此属性,也可能是访问权限不足而无法检索.(Microsoft.SqlServer.Smo)”,同样也不能删除。
这两个问题后来被证实其实是一个原因造成的。其实这和操作系统有关系,在SQL SERVER的联机丛书里得到一些启发,大致就是,当在Windows Server 2003或更高版本环境下运行SQL Server 2005时,可以使用Windows 密码策略机制,可以将 Windows Server 2003 中使用复杂性策略和过期策略应用于SQL Server 内部使用的密码。这项功能需要通过 NetValidatePasswordPolicy() API 实现,该 API 只在 Windows Server 2003 和更高版本中提供。下面是一些详细情况:
密码复杂性要求
密码复杂性策略通过增加可能密码的数量来阻止强力攻击。实施密码复杂性策略时,新密码必须符合以下原则:
密码不得包含全部或“部分”用户帐户名。部分帐户名是指三个或三个以上两端用“空白”(空格、制表符、回车符等),或任何以下字符分隔的连续字母数字字符: - _ #;
密码长度至少为六个字符;
密码应该包含以下四类字符中的三类:
英文大写字母 (A - Z)
英文小写字母 (a - z)
十个基本数字 (0 - 9)
非字母数字(例如:!、$、# 或 %)
密码过期
密码过期策略用于管理密码的使用期限。如果选中了密码过期策略,则系统将提醒用户更改旧密码和帐户,并禁用过期的密码。
策略实施
密码策略是针对各个登录名实施的。使用 ALTER LOGIN 语句可以配置策略应用程序。配置密码策略实施时,适用以下规则:
当 CHECK_POLICY 更改为 ON 时:
除非将 CHECK_EXPIRATION 显式设置为 OFF,否则也会将其设置为 ON;
密码历史使用当前的密码哈希值初始化;
当 CHECK_POLICY 更改为 OFF 时:
CHECK_EXPIRATION 也设置为 OFF;
清除密码历史;
lockout_time 的值被重置;
如果指定 MUST_CHANGE,则 CHECK_EXPIRATION 和 CHECK_POLICY 必须设置为 ON。否则该语句将失败;
如果 CHECK_POLICY 设置为 OFF,则 CHECK_EXPIRATION 不能设置为 ON,否则ALTER LOGIN 语句将失败。
在安装SQL SERVER时,默认启用了这样的策略,而我当时输入的sa密码又很简单(不满足密码复杂性要求),因此登陆时这些复杂的策略就禁止了登录过程。同时也就导致了我不能修改sa用户的信息(被自动锁定)。明白了这个原理,再结合查到的一些资料,用如下T-SQL语句即可解决这个问题:
用WINDOWS账户登录查询分析器,输入一下语句并执行:

ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = '' unlock, check_policy = off, check_expiration = off ;
GO

完成后,重新启动SQL SERVER服务,即可正常使用sa账户了。
P.S:还有个小问题,就是在新建数据库时,如果都按默认值,会出错,说“默认值无效”。后来发现这个必需在建立数据库**框中左边的选项里手工修改“排序规则”。一般用China_PRC_CI_AS即可。

错误"当 MUST_CHANGE 为 ON (开)时,不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)。"
当 MUST_CHANGE 为 ON (开)时,不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)。
解决办法:  把用户"删除重建"

 楼主| dirtysea 发表于 2012-11-4 17:07:33 | 显示全部楼层
0x800A0E7A ,0x80040154, ADO连接错误

0x800A0E7A

卸载了几个程序,然后对自己的程序进行调试的时候发现数据库连接失败,出现0x800A0E7A错误。肯定是某些组件刚才被卸载掉了,于是上网搜索了一番。很多帖子都说是sqloledb.dll 需要重新注册,于是注册掉。结果还是不行。后来发现还有个动态库需要注册那就是oledb32.dll。把这两个都注册了,再试了下自己的程序,OK了。





regsvr32  "C:/Program Files/Common Files/System/Ole DB/oledb32.dll"

regsvr32  "C:/Program Files/Common Files/System/Ole DB/sqloledb.dll"







0x80040154

同样是卸载了一些程序,结果ADO都初始化不了,唉,就是msado15.dll 又被注销了。重新注册下吧

regsvr32  "C:/Program Files/Common Files/System/ado/msado15.dll"

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家 ( 蜀ICP备12020351号 )

GMT+8, 2018-12-16 10:13 , Processed in 0.062875 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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