LOGINPROPERTY (Transact-SQL)

返回有关登录名策略设置的信息。

主题链接图标Transact-SQL 语法约定

语法

LOGINPROPERTY ( 'login_name' , 'property_name' )

参数

  • login_name.
    将为其返回登录属性状态的 SQL Server 登录名。

  • propertyname
    一个表达式,包含要为登录名返回的属性信息。propertyname 可以是下列值之一:

    说明

    BadPasswordCount

    返回尝试以不正确密码连续登录的次数。

    BadPasswordTime

    返回上次尝试以不正确密码登录的时间。

    DaysUntilExpiration

    返回密码过期前的天数。

    DefaultDatabase

    返回存储在元数据中的 SQL Server 登录名的默认数据库;如果未指定数据库,则返回 master 数据库。为非 SQL Server 提供的用户(例如经过身份验证的 Windows 用户)返回 NULL。

    DefaultLanguage

    返回存储在元数据中的登录默认语言。为非 SQL Server 提供的用户(例如经过身份验证的 Windows 用户)返回 NULL。

    HistoryLength

    使用密码策略强制机制返回为登录名跟踪的密码的数目。如果不强制执行密码策略,则为 0。恢复密码策略强制将在 1 重新开始。

    IsExpired

    返回将指示该登录名是否过期的信息。

    IsLocked

    返回将指示是否锁定该登录名的信息。

    IsMustChange

    返回将指示该登录名在下次连接时是否必须更改其密码的信息。

    LockoutTime

    返回 SQL Server 登录名由于超过允许的失败登录尝试次数而被锁定的日期。

    PasswordHash

    返回密码的哈希。

    PasswordLastSetTime

    返回设置当前密码时的日期。

返回值

数据类型取决于所请求的值。

IsLockedIsExpiredIsMustChange 的数据类型为 int。

  • 1(如果登录名处于指定状态)。

  • 0(如果登录名不处于指定状态)。

BadPasswordCountHistoryLength 的类型为 int。

BadPasswordTimeLockoutTimePasswordLastSetTime 的类型为 datetime。

PasswordHash 的类型为 varbinary。

NULL(如果登录名不是有效的 SQL Server 登录名)。

DaysUntilExpiration 的数据类型为 int

如果登录名已过期或者它将在查询的当日过期,则为 0。

如果 Windows 中的本地安全策略使密码永不过期,则为 -1。

如果某个登录名的 CHECK_POLICY 或 CHECK_EXPIRATION 设为 OFF,或者如果操作系统不支持该密码策略,则为 NULL。

注释

此内置函数返回有关 SQL Server 登录名的密码策略设置的信息。属性名称不区分大小写,因此诸如 BadPasswordCountbadpasswordcount 这样的属性名称是等价的。PasswordHashPasswordLastSetTime 属性的值在所有支持的 SQL Server 配置中都可用,但仅当 SQL Server 在 Windows Server 2003 上运行并且同时启用了 CHECK_POLICY 和 CHECK_EXPIRATION 时,其他属性才可用。有关详细信息,请参阅密码策略

权限

需要对登录名具有 VIEW 权限。请求密码哈希时,还需要 CONTROL SERVER 权限。

示例

A. 检查登录名是否必须更改其密码

以下示例检查 SQL Server 登录名 John3 在下次连接到 SQL Server 实例时是否必须更改其密码。

SELECT LOGINPROPERTY('John3', 'IsMustChange');
GO

B. 检查登录名是否已锁定

以下示例检查 SQL Server 登录名 John3 是否已锁定。

SELECT LOGINPROPERTY('John3', 'IsLocked');
GO