Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > SQL Server

Respuesta
 
Herramientas Desplegado
Antiguo 16-may-2006, 01:27   #1 (permalink)
selma128 está en el buen camino
 
Fecha de Ingreso: diciembre-2003
Mensajes: 185
Cambiar una SQL

Buenos dias, estoy tratando de hacer una sentencia de SQL que me permita cambiar el propietario de los procedimientos almacenados en mi base de datos pero hasta el momento solo he conseguido hacer que la sentencia SQL me construya las sentencias que debo de ejecutar despues.

Esta es la sentencia y me gustaria transformarla en algo que se ejecute directamente.




DECLARE @oldOwner sysname, @newOwner sysname

SELECT
@oldOwner = 'ss_420_limpio'
, @newOwner = 'ss_42002'

select 'EXECUTE sp_changeobjectowner '''+QUOTENAME(a.SPECIFIC_SCHEMA)+'.'+QUOTENAME(a.R OUTINE_NAME)+''','''+@newOwner+''''
from
INFORMATION_SCHEMA.ROUTINES a
where
a.ROUTINE_TYPE = 'procedure' or a.ROUTINE_TYPE = 'function'
AND a.SPECIFIC_SCHEMA = @oldOwner
AND
OBJECTPROPERTY(OBJECT_ID(QUOTENAME(a.SPECIFIC_SCHE MA)+'.'+QUOTENAME(a.ROUTINE_NAME)), 'IsMSShipped') = 0



Esta sentencia me devuelve la siguiente cadena

"execute sp_changeobjectowner......"

pero lo que busco es que se ejecute en un solo paso esa funcion.

Podeis ayudarme

Gracias
selma128 está desconectado   Responder Citando
Antiguo 16-may-2006, 15:55   #2 (permalink)
Moderador
Mithrandir llegará a ser famoso muy prontoMithrandir llegará a ser famoso muy pronto
 
Avatar de Mithrandir
 
Fecha de Ingreso: abril-2003
Mensajes: 12.108
Prueba algo como esto. Basicamente se trata de almacenar en una variable los resultados del select para luego ejecutar el contenido de la cadena.
Código:
DECLARE @sql VarChar(8000)

SET @sql = ''

select @sql = @sql +'   EXECUTE sp_changeobjectowner '''+QUOTENAME(a.SPECIFIC_SCHEMA)+'.'+QUOTENAME(a.R OUTINE_NAME)+''','''+@newOwner+''''
from
INFORMATION_SCHEMA.ROUTINES a
where
a.ROUTINE_TYPE = 'procedure' or a.ROUTINE_TYPE = 'function'
AND a.SPECIFIC_SCHEMA = @oldOwner
AND
OBJECTPROPERTY(OBJECT_ID(QUOTENAME(a.SPECIFIC_SCHE MA)+'.'+QUOTENAME(a.ROUTINE_NAME)), 'IsMSShipped') = 0

EXEC sp_executesql @sql
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Mithrandir está desconectado   Responder Citando
Antiguo 16-may-2006, 17:07   #3 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Este man es un duro
Developer9 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 14:41.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93