¿qué exactamente quiere comprobar si hay entrada o usuario? se crea un inicio de sesión a nivel de servidor y se crea un usuario a nivel de base de datos para que el inicio de sesión sea único en el servidor
También un usuario se crea en un inicio de sesión, un usuario sin inicio de sesión es un usuario huérfano no puede llevar a cabo de inicio de sesión de SQL Server sin un inicio de sesión
quizá u necesidad de esta comprobación
de inicio de sesión
select 'X' from master.dbo.syslogins where loginname=<username>
la consulta anterior de retorno 'X' si existe otra entrada devuelto nulo
continuación, crear un inicio de sesión
CREATE LOGIN <username> with PASSWORD=<password>
esto crea un inicio de sesión en el servidor SQL.pero sólo acepta contraseñas fuertes
crear un usuario en cada base de datos que desea para iniciar la sesión como
CREATE USER <username> for login <username>
de asignación de derechos de ejecución al usuario
GRANT EXECUTE TO <username>
debe tener permisos de administrador de sistemas o decir 'sa 'para abreviar
puede escribir un procedimiento sql para eso en una base de datos
create proc createuser
(
@username varchar(50),
@password varchar(50)
)
as
begin
if not exists(select 'X' from master.dbo.syslogins where [email protected])
begin
if not exists(select 'X' from sysusers where [email protected])
begin
exec('CREATE LOGIN '[email protected]+' WITH PASSWORD='''[email protected]+'''')
exec('CREATE USER '[email protected]+' FOR LOGIN '[email protected])
exec('GRANT EXECUTE TO '[email protected])
end
end
end
la versión de SQL Server? – pjp
Esta es una pregunta importante, pero tal como está redactada, parece pasar por alto una distinción importante: usuario vs. inicio de sesión. El posible duplicado al que Jon se vinculó parece ser realmente sobre los usuarios. Esta pregunta dice "usuario" en el título, pero trata de los inicios de sesión en el código de pregunta y en la respuesta aceptada. Edité el título y la pregunta en consecuencia. – LarsH
Solo para agregar al comentario de @LarsH, ** inicios de sesión ** están asociados con una instancia de servidor SQL, y ** usuarios ** están asociados con una base de datos específica. Los usuarios de bases de datos se pueden crear a partir de los inicios de sesión del servidor, por lo que tienen acceso a una base de datos específica. Ver [este excelente artículo] (http://www.sqlservercentral.com/articles/Stairway+Series/109975/) y, de hecho, toda la serie de la que forma parte (Stariway to SQL Server Security) – DaveBoltman