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
?
sql-server
sql-server-2012
VansFannel
fuente
fuente
Respuestas:
Usar en
sys.database_principals
lugar desys.server_principals
.Entonces la consulta final se vería así (teniendo en cuenta el filtro de usuario):
fuente
Yo uso SUSER_ID () y USER_ID () para este tipo de cosas:
fuente
Refinamiento adicional ya que esto haría una lectura más óptima
fuente
Si está utilizando servidores registrados, puede verificar muchos servidores a la vez y devolver un verdadero / falso con:
fuente
database_principals
lugar deserver_principals
, consulte la pregunta, se trata de usuarios a nivel de base de datos .