sp_addlogin的问题

fyming 2009-07-20 12:03:57
目的:想新建一个登录名,我的应用程序都通过这个登录名来登录

Exec sp_addlogin
@loginame='aaa',
@passwd='bbb'

exec sp_addsrvrolemember
@loginame='aaa',
@rolename='sysadmin'
----------------------
问题:
按上面方法建了个登录名aaa并且将它归于sysadmin之后,在应用程序用此登录名连接SQL时报错,提示权限不足。在SQL-安全性-登录名中直接查看此登录名属性,报错,见下图:


经查,发现凡用sp_addlogin方式添加的登录名,都会被“强制实施密码策略”和“状态-禁止登录”,见下图:



但用手工直接添加的登录名则无此问题,你可以在添加登录名时去掉“强制实施密码策略”的勾。

求救:
==============================================================
1、用sp_addlogin方式来添加登录名,如何避免强制实施密码策略”,以及如何将状态默认为“允许登录”?
2、之前都是用sp_addlogin来操作的,一样的代码,一样的做法,都不曾发生过问题。为什么现在会出现这样的问题?是不是我在无意当中修改了某个SQL的选项?





...全文
439 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
superpander 2009-08-08
  • 打赏
  • 举报
回复
学习。。。
仙道彰 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zjcxc 的回复:]
2008下测试了, 没有楼主提到的问题, 楼主可以用 SELECT @@VERSION看看版本号, 并且用 EXEC sp_helptext 'sp_addlogin' 看看这个存储过程的内容, 看看有没有特别的地方
[/Quote]
学习
--小F-- 2009-07-20
  • 打赏
  • 举报
回复
学习
zjcxc 元老 2009-07-20
  • 打赏
  • 举报
回复
2008下测试了, 没有楼主提到的问题, 楼主可以用 SELECT @@VERSION看看版本号, 并且用 EXEC sp_helptext 'sp_addlogin' 看看这个存储过程的内容, 看看有没有特别的地方
sdhdy 2009-07-20
  • 打赏
  • 举报
回复
2楼说的很详细了,可以通过:CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
把那个强制去掉。
你只有登录还是不够的,要访问数据库的话,要和数据库用户关联上的。
中国风 2009-07-20
  • 打赏
  • 举报
回复
以SQL2005為例

USE [master]
GO
CREATE LOGIN [Roy] WITH PASSWORD=N'1', DEFAULT_DATABASE=[Test], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [Test]
GO
CREATE USER [Roy] FOR LOGIN [Roy]
GO
USE [Test]
GO
EXEC sp_addrolemember N'db_owner', N'Roy'
GO
Yang_ 2009-07-20
  • 打赏
  • 举报
回复
改用
CREATE LOGIN
具体看帮助
fyming 2009-07-20
  • 打赏
  • 举报
回复
ok,谢谢兄弟们帮忙,稍后结贴。
照惯例,只能给邹老大1分,呵呵
中国风 2009-07-20
  • 打赏
  • 举报
回复
樓主用以上提供的05方法,
sp_addlogin --不指定CHECK_EXPIRATION設置,操作系統非(Windows Server 2003 和更新版本)時,可以執行

CHECK_EXPIRATION 和 CHECK_POLICY 只在 Windows Server 2003 和更新版本上強制執行。

CHECK_EXPIRATION--這選項與操作系統有關系。

鄒老大的系統應該不是Windows Server 2003 和更新版本?
fyming 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 roy_88 的回复:]
樓主的數據庫是SQL2005吧
改為
SQL codeUSE[master]GOCREATE LOGIN[aaa]WITH PASSWORD=N'1', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFFGOEXEC master..sp_addsrvrolemember@loginame= N'aaa',@rolename= N'sysadmin'GO
[/Quote]

是SQL2005,邹老大的SQL2008没有问题,SQL2005中呢?
baetgc 2009-07-20
  • 打赏
  • 举报
回复
.....
中国风 2009-07-20
  • 打赏
  • 举报
回复
樓主的數據庫是SQL2005吧
改為
USE [master]
GO
CREATE LOGIN [aaa] WITH PASSWORD=N'1', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
EXEC master..sp_addsrvrolemember @loginame = N'aaa', @rolename = N'sysadmin'
GO

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧