我正在使用SQL Server2012。我想在将用户添加到数据库之前检查用户是否存在。
这是我测试过的:
USE [MyDatabase]
GO
IF NOT EXISTS (SELECT name
FROM [sys].[server_principals]
WHERE name = N'IIS APPPOOL\MyWebApi AppPool')
Begin
CREATE USER [IIS APPPOOL\MyWebApi AppPool]
FOR LOGIN [IIS APPPOOL\MyWebApi AppPool] WITH DEFAULT_SCHEMA=[dbo]
end
ALTER ROLE [db_owner] ADD MEMBER [IIS APPPOOL\MyWebApi AppPool]
GO
但是,SELECT name FROM [sys].[server_principals]
如果该用户存在于中,则此代码不会返回MyDatabase
。
如何检查用户是否存在MyDatabase
?
1
请记住,sys.database_principals包含角色和用户,因此一定不要忘记过滤用户。我正在针对当前标记的答案更新最终查询,以方便参考。
—
Moiz Tankiwala