如何检查是否已在数据库中创建USER?

Q8Y*_*Q8Y 37 sql t-sql

是否有一种方法,我可以知道是否已在数据库中创建用户(而不是登录)?我的意思是用户不是登录,因为,我知道如何检查登录.我需要检查在特定数据库中创建的用户以及分配给它的角色.

这是用于检查登录的代码:

SELECT name FROM sys.server_principals WHERE name = 'test_user'
Run Code Online (Sandbox Code Playgroud)

但用户怎么样?因为如果没有创建用户,我需要创建用户并为其分配角色.否则,我将继续而不创造.

谢谢

mar*_*c_s 64

怎么样:

USE (your database you want to check the user's existence in)

SELECT * 
FROM sys.database_principals
WHERE name = '(your user name to check here)'
Run Code Online (Sandbox Code Playgroud)

sys.server_principals显示在服务器级别定义的登录 - sys.database_principals向您显示数据库级别的主体(例如用户帐户).


gbn*_*gbn 14

这将告诉您给定登录名的匹配用户名

USE MyDB
SELECT
    sp.name AS ServerLoginName,
    dp.name AS DBUserName
FROM
    sys.server_principals sp
    LEFT JOIN
    sys.database_principals dp ON sp.sid = dp.sid
WHERE
    sp.name = 'MyLogin'
Run Code Online (Sandbox Code Playgroud)


小智 8

use SomeDatabase
go

/* built-in system function */
select database_principal_id('UserNameHere')

/* check if exists and drop */
if database_principal_id('UserNameHere') is not null
    drop user 'UserNameHere'
go
Run Code Online (Sandbox Code Playgroud)