Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Cambiar una SQL

Estas en el tema de Cambiar una SQL en el foro de SQL Server en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/05/2006, 01:27
 
Fecha de Ingreso: diciembre-2003
Mensajes: 190
Antigüedad: 20 años, 5 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 16/05/2006, 15:55
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
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
  #3 (permalink)  
Antiguo 16/05/2006, 17:07
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Este man es un duro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:08.