目的:想新建一个登录名,我的应用程序都通过这个登录名来登录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的选项?

解决方案 »

  1.   

    改用
    CREATE LOGIN
    具体看帮助
      

  2.   

    以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
      

  3.   

    2楼说的很详细了,可以通过:CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
    把那个强制去掉。
    你只有登录还是不够的,要访问数据库的话,要和数据库用户关联上的。
      

  4.   

    2008下测试了, 没有楼主提到的问题, 楼主可以用 SELECT @@VERSION看看版本号, 并且用 EXEC sp_helptext 'sp_addlogin' 看看这个存储过程的内容, 看看有没有特别的地方
      

  5.   

    樓主的數據庫是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
      

  6.   


    是SQL2005,邹老大的SQL2008没有问题,SQL2005中呢?
      

  7.   

    樓主用以上提供的05方法,
    sp_addlogin --不指定CHECK_EXPIRATION設置,操作系統非(Windows Server 2003 和更新版本)時,可以執行CHECK_EXPIRATION 和 CHECK_POLICY 只在 Windows Server 2003 和更新版本上強制執行。CHECK_EXPIRATION--這選項與操作系統有關系。鄒老大的系統應該不是Windows Server 2003 和更新版本?