SQL Server 2012 ile çalışıyorum. Bir veritabanına eklemeden önce bir kullanıcının olup olmadığını kontrol etmek istiyorum.
Test ettiğim şey bu:
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
Ancak, bu SELECT name FROM [sys].[server_principals]
kullanıcı söz konusu ise bu kod geri dönmez MyDatabase
.
Bir kullanıcının içeride olup olmadığını nasıl kontrol edebilirim MyDatabase
?
1
Sys.database_principals'in birlikte roller ve kullanıcılar içerdiğini unutmayın, bu nedenle kullanıcıların filtrelemeyi unutmaması gerekir. Nihai sorguyu, kolay referans olması için işaretlenmiş yanıtla karşılaştırıyorum.
—
Moiz Tankiwala