none
Convertir un scrip en procedimiento almacenado RRS feed

  • Pregunta

  • Hola todos:

    Tengo el siguiente scrip que me funciona sin problema, llevo muchos dias desarollandolo en este momento me piden que lo ejecute mediante un procedimento almacenado, la verdad no manejo el tema, solicito el favor de alguno de ustedes que me pueda colaborar en ejecutar este scrip mediante un procedimiento almacenado

    el scrip es el siuiente:


    use master

    create table #temp1 (loginname varchar(200),--denylogin varchar(20),haaccess varchar(20),
    sysadmin varchar(20),securityadmin varchar(20),serveradmin varchar(20),
    setupadmin varchar(20),processadmin varchar(20),diskadmin varchar(20),dbcreator varchar(20), bulkadmin varchar(20), ROLES varchar(400)
    )
    insert into #temp1
    select  convert (varchar (200),loginname) as  loginname,  convert(varchar(20),sysadmin ) as  sysadmin,
    convert(varchar(20),securityadmin ) as  securityadmin,convert(varchar(20),serveradmin ) as  serveradmin,
    convert(varchar(20),setupadmin  ) as  setupadmin , convert(varchar(20),processadmin  ) as  processadmin ,
    convert(varchar(20),diskadmin  ) as  diskadmin,convert(varchar(20), dbcreator  ) as   dbcreator,
    convert(varchar(20), bulkadmin  ) as   bulkadmin,''
    from syslogins
    ------------------------------------
    update #temp1  set sysadmin='sysadmin' where sysadmin='1'
    update #temp1  set sysadmin='' where sysadmin='0'
    --
    update #temp1 set securityadmin='securityadmin'where securityadmin='1'
    update #temp1 set securityadmin='' where securityadmin='0'
    --
    update #temp1 set serveradmin='serveradmin'where serveradmin='1'
    update #temp1 set serveradmin='' where serveradmin='0'
    --
    update #temp1 set setupadmin='setupadmin'where setupadmin='1'
    update #temp1 set setupadmin='' where setupadmin='0'
    --
    update #temp1 set processadmin='processadmin'where processadmin='1'
    update #temp1 set processadmin='' where processadmin='0'
    --
    update #temp1 set diskadmin='diskadmin'where diskadmin='1'
    update #temp1 set diskadmin='' where diskadmin='0'
    --
    update #temp1 set dbcreator='dbcreator'where dbcreator='1'
    update #temp1 set dbcreator='' where dbcreator='0'
    --
    update #temp1 set bulkadmin='bulkadmin'where bulkadmin='1'
    update #temp1 set bulkadmin='' where bulkadmin='0'
    --
    update #temp1
    set ROLES= sysadmin + ','+ securityadmin + ','+ serveradmin + ','+ setupadmin + ','+ processadmin + ','+ diskadmin
    + ','+ dbcreator+ ','+ bulkadmin
    --
    update #temp1
    set ROLES =replace(ROLES,',,','')
    update #temp1
    set ROLES =''
    where ROLES =','

    update #temp1
    set ROLES ='public'
    where roles =''


    update #temp1
    set ROLES =substring(roles,2,len(roles))
    where substring(roles,len(roles)-len(roles),2) =','

    update #temp1
    set roles = substring(roles,1,len(roles)-1)
    where substring(roles,len(roles),1)=','

    select cliente='TELEFONICA', plataforma='MICROSOFT SQL SERVER', convert(varchar(100), serverproperty('servername')) as instancia ,Loginname,
    case
    when loginname in (
    'sa',
    'AVIANCA\MSSQL2K',
    'Builtin\administrators')
    OR loginname like '%SQLServer2%'
    OR loginname like '%##MS%'
    OR loginname like '%NT AUTHORITY%'
    then 'Usuario del sistema'
    else 'Usuario Personal' end as Tipo_usuario,

    case
    when loginname in (
    'sa',
    'AVIANCA\MSSQL2K',
    'AVIANCA\G SQLADMINS',
    'LATAM\grupo adm sql server',
    'TELECOM\Grupo Bases datos IBM',
    'Builtin\administrators')
    OR loginname like '%SQLServer2%'
    OR loginname like '%##MS%'
    OR loginname like '%NT AUTHORITY%'
    then 'IBM'
    else 'TELEFONICA' end as owner1,

    case
    when loginname in (
    'sa',
    'AVIANCA\MSSQL2K',
    'AVIANCA\G SQLADMINS',
    'LATAM\grupo adm sql server',
    'TELECOM\Grupo Bases datos IBM',
    'Builtin\administrators')
    OR loginname like '%SQLServer2%'
    OR loginname like '%##MS%'
    OR loginname like '%NT AUTHORITY%'
    then 'JAVIER ANDRES RUEDA'
    else 'TELEFONICA' end as ownername,


    case
    when loginname in (
    'sa',
    'AVIANCA\MSSQL2K',
    'AVIANCA\G SQLADMINS',
    'LATAM\grupo adm sql server',
    'TELECOM\Grupo Bases datos IBM',
    'Builtin\administrators')
    OR loginname like '%SQLServer2%'
    OR loginname like '%##MS%'
    OR loginname like '%NT AUTHORITY%'
    then 'D72714'
    else 'NULL' end as ownercod,

    Roles, Country='661' ,
    getdate() as fecha
     from #temp1

    drop table #temp1

    lunes, 9 de julio de 2012 20:14

Respuestas

Todas las respuestas

  • Hola. Como lo veo, simplemente lo encapsulas con "CREATE PROCEDURE <nombre_de_procedimiento> AS" y listo. Sin embargo, revisa bien la lógica para ver si necesitas parámetros o devolver algún valor.

    Mayor información en http://msdn.microsoft.com/en-us/library/ms187926.aspx

    Saludos,


    Guillermo Taylor F.
    IT Pro & Xbox gamer
    My blog

    lunes, 9 de julio de 2012 21:18
  • guillermo y tu no me podias ayudar con esas sentencias que se necesitan

    gracias

    • Marcado como respuesta Dennis Ariza miércoles, 11 de julio de 2012 14:41
    lunes, 9 de julio de 2012 21:40
  • Hola. Pensé que había sido claro en mi planteamiento... Ofrezco disculpas si no lo fui.

    De nuevo, tienes que abrir una ventana de query en tu SQL Server Management Studio, asumiendo que estás usándolo, y escribir en este lo siguiente:

    CREATE PROCEDURE <nombre_de_tu_procedimiento> AS
         <copias el script que nos compartiste>
    GO
    

    Ejecutas lo anterior y ya queda como un procedimiento almacenado. Para llamarlo simplemente lo llamas así:

    EXEC <nombre_de_tu_procedimiento>;

    Nos cuentas como te va.

    Saludos,


    Guillermo Taylor F.
    IT Pro & Xbox gamer
    My blog

    lunes, 9 de julio de 2012 23:11
  • Hice lo que me indicaste y no me funciono, te puedo pedir el favor que tu lo hagas en el scrip y me lo envies

    gracias

    saludos

    Dennnis Oswaldo

    • Marcado como respuesta Dennis Ariza miércoles, 11 de julio de 2012 14:40
    martes, 10 de julio de 2012 15:55
  • Hola. Si, como te indiqué, copiaste y pegaste el código, el error que te debió salir te decía que eliminaras la sentencia "USE MASTER". Si la eliminas y corres la sentencia T-SQL, te crea el procedimiento almacenado.

    create procedure MSDN_Forum_Test as
    
    create table #temp1 (loginname varchar(200),--denylogin varchar(20),haaccess varchar(20),
     sysadmin varchar(20),securityadmin varchar(20),serveradmin varchar(20),
     setupadmin varchar(20),processadmin varchar(20),diskadmin varchar(20),dbcreator varchar(20), bulkadmin varchar(20), ROLES varchar(400)
     )
     insert into #temp1 
    select  convert (varchar (200),loginname) as  loginname,  convert(varchar(20),sysadmin ) as  sysadmin,
     convert(varchar(20),securityadmin ) as  securityadmin,convert(varchar(20),serveradmin ) as  serveradmin,
     convert(varchar(20),setupadmin  ) as  setupadmin , convert(varchar(20),processadmin  ) as  processadmin ,
     convert(varchar(20),diskadmin  ) as  diskadmin,convert(varchar(20), dbcreator  ) as   dbcreator,
     convert(varchar(20), bulkadmin  ) as   bulkadmin,''
     from syslogins
     ------------------------------------
     update #temp1  set sysadmin='sysadmin' where sysadmin='1'
     update #temp1  set sysadmin='' where sysadmin='0'
     --
     update #temp1 set securityadmin='securityadmin'where securityadmin='1'
     update #temp1 set securityadmin='' where securityadmin='0'
     --
     update #temp1 set serveradmin='serveradmin'where serveradmin='1'
     update #temp1 set serveradmin='' where serveradmin='0'
     --
     update #temp1 set setupadmin='setupadmin'where setupadmin='1'
     update #temp1 set setupadmin='' where setupadmin='0'
     --
     update #temp1 set processadmin='processadmin'where processadmin='1'
     update #temp1 set processadmin='' where processadmin='0'
     --
     update #temp1 set diskadmin='diskadmin'where diskadmin='1'
     update #temp1 set diskadmin='' where diskadmin='0'
     --
     update #temp1 set dbcreator='dbcreator'where dbcreator='1'
     update #temp1 set dbcreator='' where dbcreator='0'
     --
     update #temp1 set bulkadmin='bulkadmin'where bulkadmin='1'
     update #temp1 set bulkadmin='' where bulkadmin='0'
     --
     update #temp1
     set ROLES= sysadmin + ','+ securityadmin + ','+ serveradmin + ','+ setupadmin + ','+ processadmin + ','+ diskadmin
     + ','+ dbcreator+ ','+ bulkadmin
     --
     update #temp1
     set ROLES =replace(ROLES,',,','')
     update #temp1
     set ROLES =''
     where ROLES =','
     
    update #temp1
     set ROLES ='public'
     where roles =''
     
    
    update #temp1
     set ROLES =substring(roles,2,len(roles))
     where substring(roles,len(roles)-len(roles),2) =','
     
    update #temp1
     set roles = substring(roles,1,len(roles)-1)
     where substring(roles,len(roles),1)=','
     
    select cliente='TELEFONICA', plataforma='MICROSOFT SQL SERVER', convert(varchar(100), serverproperty('servername')) as instancia ,Loginname,
     case
     when loginname in (
     'sa',
     'AVIANCA\MSSQL2K',
     'Builtin\administrators')
     OR loginname like '%SQLServer2%' 
    OR loginname like '%##MS%' 
    OR loginname like '%NT AUTHORITY%' 
    then 'Usuario del sistema' 
    else 'Usuario Personal' end as Tipo_usuario, 
    
    case
     when loginname in (
     'sa',
     'AVIANCA\MSSQL2K',
     'AVIANCA\G SQLADMINS',
     'LATAM\grupo adm sql server',
     'TELECOM\Grupo Bases datos IBM',
     'Builtin\administrators')
     OR loginname like '%SQLServer2%' 
    OR loginname like '%##MS%' 
    OR loginname like '%NT AUTHORITY%' 
    then 'IBM' 
    else 'TELEFONICA' end as owner1, 
    
    case
     when loginname in (
     'sa',
     'AVIANCA\MSSQL2K',
     'AVIANCA\G SQLADMINS',
     'LATAM\grupo adm sql server',
     'TELECOM\Grupo Bases datos IBM',
     'Builtin\administrators')
     OR loginname like '%SQLServer2%' 
    OR loginname like '%##MS%' 
    OR loginname like '%NT AUTHORITY%' 
    then 'JAVIER ANDRES RUEDA' 
    else 'TELEFONICA' end as ownername, 
    
    
    case
     when loginname in (
     'sa',
     'AVIANCA\MSSQL2K',
     'AVIANCA\G SQLADMINS',
     'LATAM\grupo adm sql server',
     'TELECOM\Grupo Bases datos IBM',
     'Builtin\administrators')
     OR loginname like '%SQLServer2%' 
    OR loginname like '%##MS%' 
    OR loginname like '%NT AUTHORITY%' 
    then 'D72714' 
    else 'NULL' end as ownercod, 
    
    Roles, Country='661' , 
    getdate() as fecha 
     from #temp1
     
    drop table #temp1
    
    GO
    

    Saludos,


    Guillermo Taylor F.
    IT Pro & Xbox gamer
    My blog

    martes, 10 de julio de 2012 19:24
  • Buenos Dias:

    Guillermo gracias por tu ayuda, todo me funciono muy bien y lo entendi y compredi, ahora necesito otro favor para poder continuar con el proceso

    he creado unos link server ne cesito que el procedimiento que me ayudaste hacer me recorra los link server y me traiga la informaciones el nombre del link server FUENTEBIF Y FUENTESBRRES

    Gracias

    Dennis Oswaldo Ariza Roncancio 

    miércoles, 11 de julio de 2012 14:40