Necesito verificar si ya existe un inicio de sesión específico en el SQL Server, y si no es así, debo agregarlo.
He encontrado el siguiente código para agregar realmente el inicio de sesión a la base de datos, pero quiero envolver esto en una declaración IF (de alguna manera) para verificar si el inicio de sesión existe primero.
CREATE LOGIN [myUsername] WITH PASSWORD=N'myPassword',
DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
Entiendo que necesito interrogar una base de datos del sistema, ¡pero no estoy seguro de por dónde empezar!
sql-server
login
Brett Rigby
fuente
fuente
Respuestas:
Desde aqui
fuente
x] with password ''y'';\r\ndrop table foo;\r\n
CREATE LOGIN [@loginName] FROM ...
? Disculpe mi ignorancia, me gustaría aprender ...QUOTENAME()
da vueltas@loginName
, no toda la declaración, y luego puedes deshacerte de los delimitadores manuales [y]@loginName
.Aquí hay una manera de hacer esto en SQL Server 2005 y versiones posteriores sin usar la vista obsoleta de syslogins:
La vista server_principals se usa en lugar de sql_logins porque esta última no enumera los inicios de sesión de Windows.
Si necesita verificar la existencia de un usuario en una base de datos en particular antes de crearlos, puede hacer esto:
fuente
Como una adición menor a este hilo, en general, desea evitar el uso de las vistas que comienzan con sys.sys * ya que Microsoft solo las incluye por compatibilidad con versiones anteriores. Para su código, probablemente debería usar sys.server_principals. Esto supone que está utilizando SQL 2005 o superior.
fuente
Puede usar la función incorporada:
vía
me gusta:
https://technet.microsoft.com/en-us/library/ms176042(v=sql.110).aspx
fuente
Pruebe esto (reemplace 'usuario' con el nombre de inicio de sesión real):
fuente
Esto funciona en SQL Server 2000.
en SQL 2005, cambie la segunda línea a
No estoy seguro acerca de SQL 2008, pero supongo que será lo mismo que SQL 2005 y, de lo contrario, esto debería darle una idea de dónde comenzar a buscar.
fuente
¿Qué es exactamente lo que quiere comprobar para iniciar sesión o usuario? se crea un inicio de sesión en el nivel del servidor y se crea un usuario en el nivel de la base de datos para que el inicio de sesión sea único en el servidor
también se crea un usuario contra un inicio de sesión, un usuario sin inicio de sesión es un usuario huérfano y no es útil ya que no puede realizar el inicio de sesión del servidor SQL sin un inicio de sesión
tal vez necesites esto
verificar el inicio de sesión
la consulta anterior devuelve 'X' si el inicio de sesión existe, devuelva nulo
luego crea un inicio de sesión
esto crea un inicio de sesión en el servidor sql. pero solo acepta contraseñas seguras
cree un usuario en cada base de datos que desee para iniciar sesión como
asignar derechos de ejecución al usuario
DEBE TENER permisos de SYSADMIN o decir 'sa' para abreviar
puede escribir un procedimiento sql para eso en una base de datos
fuente
Para evitar conflictos de nombres entre inicios de sesión, roles, usuarios, etc., debe verificar la
type
columna de acuerdo con documentación de Microsoft sys.database_principalsPara manejar caracteres especiales en nombres de usuario, etc., use
N'<name>'
y[<name>]
consecuencia.Crear inicio de sesión
Crear usuario de base de datos
Crear rol de base de datos
Agregar usuario al rol
Conceder derechos al rol
fuente
Esto es para Azure SQL:
Fuente: Cómo verificar si el usuario de la base de datos ya existe en Azure SQL Database
fuente
Primero debe verificar la existencia de inicio de sesión utilizando la vista syslogins:
Luego debe verificar la existencia de su base de datos:
fuente