【问题标题】:Add user in database?在数据库中添加用户?
【发布时间】:2010-01-06 19:40:56
【问题描述】:

我有一个可以登录 sql server 的用户。现在我需要在数据库中添加用户,但是我不确定该用户是否已经存在于数据库中。 所以我需要脚本,它检查用户是否存在于数据库中,如果不存在,它应该将该用户添加到该数据库中。

我该怎么做?

【问题讨论】:

    标签: sql-server database add


    【解决方案1】:

    您不能有重复的用户,因此您可以尝试创建它并处理错误(如果它已经存在)。

    【讨论】:

    • @Paul Creasey,OP 不希望有重复的用户,因此该帖子。你的回答只是重复OP所说的。
    • @Helen,无法插入重复用户,sys.database_principals.name 对其有唯一约束。我只是提供一种替代方法。
    【解决方案2】:

    查看用户目录视图,sys.database_principals

    select * from [dbname].sys.database_principals 
    where name = 'loginname';
    

    要 100% 准确,您需要通过用户的 SID 进行检查,而不是通过名称:

    select * from [dbname].sys.database_principals 
    where sid = SUSER_SID('loginame');
    

    请注意,用户可能已经通过组和角色成员资格获得访问权限,但这是一个单独的主题。

    【讨论】:

      【解决方案3】:

      我认为这有效:

      如果 DATABASE_PRINCIPAL_ID('login') 为 NULL
      开始
      为登录 [登录] 创建用户 [用户名]
      结束

      ^ 仅当数据库中的用户名与登录名相同时才有效。

      【讨论】:

        【解决方案4】:

        执行SELECT COUNT(*),看看你得到的是 0 还是 1。

        【讨论】:

          猜你喜欢
          • 2012-04-28
          • 1970-01-01
          • 1970-01-01
          • 2013-06-08
          • 2017-12-28
          • 1970-01-01
          • 2019-01-20
          • 2019-12-09
          • 1970-01-01
          相关资源
          最近更新 更多