Conocer Si existe un inicio de sesion en SQL

04/11/2003 - 23:33 por Hernan Arboleda | Informe spam
Hola Grupo

Hay forma de saber si un Login de un usuario existe??

Me explico
Utilizo sp_Addlogin 'Usuario_SysOF', 'miClave'
Pero si el Login existe me genera un error
' Servidor: mensaje 15025, nivel 16, estado 1, procedimiento sp_addlogin,
línea 56
El inicio de sesión 'Usuario_SysOF' ya existe.'

Deseo saber si 'Usuario_SysOF' ya existe para no crealo??

Mil gracias por cualquier informacion

Hernan

Preguntas similare

Leer las respuestas

#1 Isaías
04/11/2003 - 23:55 | Informe spam
Puede que te de una idea de como manejar la situacion

declare @MyUser varchar(15)
SET @MyUser = 'Usuario_SysOF'

if exists(select name from master..sysusers where name =
@MyUser)
select 'El usuario '+ @MyUser+' ya existe'
else
exec sp_Addlogin @MyUser, 'miClave'
Respuesta Responder a este mensaje
#2 Fernando G. Guerrero
05/11/2003 - 08:08 | Informe spam
Hola Isaías,

Disculpa que me entrometa en esta conversación, pero yo preferiría no
acceder a tablas del sistema directamente, sino utilizar una función del
sistema (como SUSER_SID):

DECLARE @MyUser sysname
SET @MyUser = N'Usuario_SysOF'

IF SUSER_SID(@MyUser) IS NULL
EXEC sp_addlogin @MyUser, N'miClave'
ELSE
SELECT 'El inicio de sesión '+ @MyUser+' ya existe'

Por otro lado, el scripts que has enviado comprueba la existencia de un
registro en la tabla sysusers, y dependiendo de ello crea un inicio de
sesión, el cual no se almacenaría en sysusers, sino en la tabla syslogins.
Además la tabla sysusers contiene también los roles de la base de datos,
además de los usuarios de la base de datos, por lo que podría darse el caso
de que existiera un rol con ese nombre y no un usuario.

Además, los objetos del sistema, como los inicios de sesión deben ser
almacenados en variables de tipo sysname (nvarchar(128)), como norma
general, para hacerlos directamente compatibles con los procedimientos del
sistema.

Perdona este comentario que no tiene ninguna importancia, pero si ejecutas
tu script en un sistema que se haya instalado coomo sensible a mayúsculas,
te daría un error de sintaxis, ya que el procedimiento sp_Addlogin no
existiría en ese sistema (existiría el sp_addlogin).

Saludos

Fernando G. Guerrero
SQL Server MVP
CEO & Principal Mentor
Solid Quality Learning
www.solidqualitylearning.com

"Comparte lo que sabes, aprende lo que no sepas"

"Isaías" wrote in message
news:05db01c3a326$b8b832f0$
Puede que te de una idea de como manejar la situacion

declare @MyUser varchar(15)
SET @MyUser = 'Usuario_SysOF'

if exists(select name from master..sysusers where name > @MyUser)
select 'El usuario '+ @MyUser+' ya existe'
else
exec sp_Addlogin @MyUser, 'miClave'
Respuesta Responder a este mensaje
#3 Carlos Sacristan
05/11/2003 - 08:45 | Informe spam
¡¡Dos días seguidos leyendo a Fernando!! ¿Dónde lo celebramos? ;-)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Fernando G. Guerrero" escribió en el mensaje
news:
Hola Isaías,

Disculpa que me entrometa en esta conversación, pero yo preferiría no
acceder a tablas del sistema directamente, sino utilizar una función del
sistema (como SUSER_SID):

DECLARE @MyUser sysname
SET @MyUser = N'Usuario_SysOF'

IF SUSER_SID(@MyUser) IS NULL
EXEC sp_addlogin @MyUser, N'miClave'
ELSE
SELECT 'El inicio de sesión '+ @MyUser+' ya existe'

Por otro lado, el scripts que has enviado comprueba la existencia de un
registro en la tabla sysusers, y dependiendo de ello crea un inicio de
sesión, el cual no se almacenaría en sysusers, sino en la tabla syslogins.
Además la tabla sysusers contiene también los roles de la base de datos,
además de los usuarios de la base de datos, por lo que podría darse el


caso
de que existiera un rol con ese nombre y no un usuario.

Además, los objetos del sistema, como los inicios de sesión deben ser
almacenados en variables de tipo sysname (nvarchar(128)), como norma
general, para hacerlos directamente compatibles con los procedimientos del
sistema.

Perdona este comentario que no tiene ninguna importancia, pero si ejecutas
tu script en un sistema que se haya instalado coomo sensible a mayúsculas,
te daría un error de sintaxis, ya que el procedimiento sp_Addlogin no
existiría en ese sistema (existiría el sp_addlogin).

Saludos

Fernando G. Guerrero
SQL Server MVP
CEO & Principal Mentor
Solid Quality Learning
www.solidqualitylearning.com

"Comparte lo que sabes, aprende lo que no sepas"

"Isaías" wrote in message
news:05db01c3a326$b8b832f0$
> Puede que te de una idea de como manejar la situacion
>
> declare @MyUser varchar(15)
> SET @MyUser = 'Usuario_SysOF'
>
> if exists(select name from master..sysusers where name > > @MyUser)
> select 'El usuario '+ @MyUser+' ya existe'
> else
> exec sp_Addlogin @MyUser, 'miClave'


Respuesta Responder a este mensaje
#4 Fernando G. Guerrero
05/11/2003 - 08:48 | Informe spam
Es que es casi medianoche en Seattle y estoy muy contento porque hemos
resuelto un grave problema con un cliente a base de detectar un bug
indocumentado en SQL Server 2000 ;-)

A parte de que me encantaría participar más en este grupo, aunque veo que lo
tenéis excelentemente cubierto (de lo cual me alegro mucho ya que así
también puedo aprender yo)

Una cerveza en cuando tengamos ocasión. :-)


Fernando G. Guerrero
SQL Server MVP
CEO & Principal Mentor
Solid Quality Learning
www.solidqualitylearning.com

"Comparte lo que sabes, aprende lo que no sepas"

"Carlos Sacristan" wrote in message
news:

¡¡Dos días seguidos leyendo a Fernando!! ¿Dónde lo celebramos? ;-)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Fernando G. Guerrero" escribió en el


mensaje
news:
> Hola Isaías,
>
> Disculpa que me entrometa en esta conversación, pero yo preferiría no
> acceder a tablas del sistema directamente, sino utilizar una función del
> sistema (como SUSER_SID):
>
> DECLARE @MyUser sysname
> SET @MyUser = N'Usuario_SysOF'
>
> IF SUSER_SID(@MyUser) IS NULL
> EXEC sp_addlogin @MyUser, N'miClave'
> ELSE
> SELECT 'El inicio de sesión '+ @MyUser+' ya existe'
>
> Por otro lado, el scripts que has enviado comprueba la existencia de un
> registro en la tabla sysusers, y dependiendo de ello crea un inicio de
> sesión, el cual no se almacenaría en sysusers, sino en la tabla


syslogins.
> Además la tabla sysusers contiene también los roles de la base de datos,
> además de los usuarios de la base de datos, por lo que podría darse el
caso
> de que existiera un rol con ese nombre y no un usuario.
>
> Además, los objetos del sistema, como los inicios de sesión deben ser
> almacenados en variables de tipo sysname (nvarchar(128)), como norma
> general, para hacerlos directamente compatibles con los procedimientos


del
> sistema.
>
> Perdona este comentario que no tiene ninguna importancia, pero si


ejecutas
> tu script en un sistema que se haya instalado coomo sensible a


mayúsculas,
> te daría un error de sintaxis, ya que el procedimiento sp_Addlogin no
> existiría en ese sistema (existiría el sp_addlogin).
>
> Saludos
>
> Fernando G. Guerrero
> SQL Server MVP
> CEO & Principal Mentor
> Solid Quality Learning
> www.solidqualitylearning.com
>
> "Comparte lo que sabes, aprende lo que no sepas"
>
> "Isaías" wrote in message
> news:05db01c3a326$b8b832f0$
> > Puede que te de una idea de como manejar la situacion
> >
> > declare @MyUser varchar(15)
> > SET @MyUser = 'Usuario_SysOF'
> >
> > if exists(select name from master..sysusers where name > > > @MyUser)
> > select 'El usuario '+ @MyUser+' ya existe'
> > else
> > exec sp_Addlogin @MyUser, 'miClave'
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida