Estoy trabajando con SQL Server 2012. Quiero verificar si existe un usuario antes de agregarlo a una base de datos.
Esto es lo que he probado:
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
Pero, este código SELECT name FROM [sys].[server_principals]
no regresa si ese usuario existe en MyDatabase
.
¿Cómo puedo verificar si existe un usuario en MyDatabase
?
1
Tenga en cuenta que sys.database_principals contiene roles y usuarios juntos, por lo que no se debe olvidar filtrar a los usuarios. Estoy actualizando la consulta final con la respuesta actualmente marcada para una referencia fácil.
—
Moiz Tankiwala