SQL2008+SERVER2008的解决方案

 

 

今天在windows Server 2008下安装了Sql Server 2008,可是遇到了几个小问题,现将这几个问题的解决方案共享一下,供大家参考!

前面几个问题是转载别人的..... 不过找到这些答案并不容易呀~~~~ 微软软件现在真是越来越安全了.....做的有点过了

 

问题一:无法使用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 = '<password>' unlock, check_policy = off, check_expiration = off ;

GO

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

 

安装.Net3.5SP1时又出现了小插曲,下载的是完整包,可安装起来居然还要下载,再鄙视下~~~~~

后来了解到是因为语言包的问题才不得不去下载当前系统的语言包.不过我的Server没有连外网~~~郁闷!!! 所以只好找脱机的方法了.....

找到的解决方案:解压缩.NET的安装包,然后在netframe的文件夹中还有个压缩包再解压,就可以看到纯正的SETUP文件了!!!! O YE~

终于装完了,可是问题又出现了~~~!!!!汗   在SERVER能连接到本地数据库,而远程不行:

解决方案如下:

1.sa的密码是否正确,是否启动.

2.确认命名管道,TCP已启动,如没启动则启用后重起SQLSERVER

3.看防火墙是否打开,如有打开,请看一下TCP Port是否被阻止,如有组织则在例外上添加1433 一般都是这个端口.

终于可以完工了~~~~~

 

 

 

posted on 2009-05-27 17:24  Mike Mao  阅读(2009)  评论(0编辑  收藏  举报

导航