Manejo de ciclos y cursores en SQL SERVER

En este ejemplo, voy a mostrar cómo crear varios logins de sql server en SQL Server.
Voy a usar el T-SQL que no es otra cosa que el lenguaje transact –sql de Microsoft. Una extensión del sql.
Los nombres son usuario1, usuario2, usuario3, etc, etc.
Este código fue probado en SQL Server 2005 y 2008. Teóricamente funciona también en SQL Server 2000.
Estos ejemplo ayuda mucho a entender como pasar variables dentro de sentencias T-SQL. El comando execute es la clave del éxito para muchos propósitos de T-SQL.

Declare @database varchar(8)
Set @database=´base1´

Execute(‘create database ’ +@database)

El comando execute permite manejar variables facilmente dentro de comandos T-SQL.
  • Cómo crear varios logins y usuarios de base de datos sql server utilizando ciclos.
  • Para borrar la lista de logins y usuarios creados anteriormente
  • Para dar permisos de GRANT CREATE ANY DATABASE A TODOS LOS LOGINS


    Cómo crear varios logins y usuarios de base de datos sql server utilizando ciclos:
    Este es un ejemplo básico de cómo crear varios logins con nombres aleatorios.

    /*El siguiente ejemplo crea 10 logins de sql server*/
    declare @login varchar(10)
    declare @count int
    set @count=1
    /*Se usa el comando while en ciclos de sql server*/
    while @count<=10
    BEGIN
    set @login='login'+CAST(@count as varchar(2))
    /*Crea logins*/
    EXECUTE ('CREATE LOGIN ' + @login+' WITH PASSWORD =''coso''')
    EXECUTE ('CREATE USER '+@login)
    set @count=@count +1
    END

    /*Para borrar la lista de logins y usuarios creados anteriormente*/
    declare @login varchar(10)
    declare @count int
    set @count=1
    while @count<=10
    BEGIN
    set @login='login'+CAST(@count as varchar(2))
    EXECUTE ('drop LOGIN ' + @login)
    EXECUTE ('drop USER ' + @login)
    set @count=@count +1
    END

  • Para dar permisos de GRANT CREATE ANY DATABASE A TODOS LOS LOGINS
    Esto es más complicado. Primero hay que utilizar cursores de sql server. Cursores es una manera de recibir los datos y manipularlos secuencialmente. En este caso vamos a obtener los logins de la base de datos de la vista master.sys.syslogins. Esta vista contiene los logins del sistema. Vamos a guardar en una variable @login cada uno de los cursores. Entonces, lo primero que hay que hacer es usar el DECLARE, para crear el cursos. Es muy parecido a la declaración de variables. Luego se abre el cursos con OPEN.
    FETCH NEXT sirve para ir de fila en fila. Con FETCH NEXT vamos a ir cambiando de login. Luego con execute le damos el permiso deseado y le pasamos el login.

  • /*Para dar permisos de GRANT CREATE ANY DATABASE A TODOS LOS LOGINS DE LA BASE DE DATOS SQL SERVER
    */
    DECLARE Login_Cursor CURSOR FOR
    SELECT name
    FROM master.sys.syslogins
    OPEN Login_Cursor
    DECLARE @login varchar(30)
    FETCH NEXT FROM Login_Cursor into @login
    WHILE @@FETCH_STATUS <> -1
    BEGIN
    execute ('grant create any database to '+@login )
    --execute ('create user '+@login )
    FETCH NEXT FROM Login_Cursor into @login

    END
    CLOSE Login_Cursor
    DEALLOCATE Login_Cursor
    GO


Espero que estos ejemplos sean útiles.
Sin tienen preguntas escriban a este blog.

Comentarios

  1. Agradeceria que alguien me ayudara con algunas pistas para desarrollar o siguiente:

    OBJETIVO GENERAL

    Crear un sistema que permita el reporte de quejas, reclamos, sugerencias, felicitaciones, problemas de hardware, de software, y de mantenimiento en general, entre otros, y que a su vez permita generar una solución rápida y eficaz a los reportes.




    MATRIZ DE TRAZABILIDAD


    Requerimiento JEFE DE AREA DBA EMPLEADO
    Validar ingreso de administrador x
    Validar ingreso de empleado x
    Ingresar empleado x
    Modificar empleado x
    Consultar empleado x
    Borrar empleado x
    Ingresar estado x
    Modificar estado x
    Consultar estado x
    Borrar estado x
    Radicar requerimiento X x
    Asignar requerimiento X
    Solución parcial X
    Solución total X
    Cancelar requerimiento x

    Mil gracias.

    ResponderEliminar
  2. Vale. En que programa hay que realizar ese sistema ?. SQL Server con C# ?

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

The Deep Sea: una web interactiva para explorar las profundidades el mar y descubrir las extrañas criaturas que viven en él

Detectar el usuario de Windows utilizando C#

Lo nuevo de SQL Server 2008 respecto a SQL Server 2005