Hola a todos!!!!
Tengo un problema, es el siguiente.
El problema esta en el object_id, es como que no me
detecta en que base de datos estoy. y no me devuelve
ningun resultado. si pongo la base de datos en la que
deberia de estar, me funciona, pero el problema esta
cuando la dejo en una cualquiera, es como que no cambia,
pero no me cambia cuando utilizo el object_id, si le pongo
cualquier otra condicion, si que me da el resultado que
seria el correcto.
Mi intento de solucion. Ponerlo en vez de como funcion,
sacarla fuera e intentar conseguir el resutlado fuera. lo
he intentado con
exec('use '+''+@nombres+''+' set '+''+@aux+''+'= object_id
('+''+@tablename+''+')'),
y tambien con
set @sql4 = N'use '+ @nombres+' select @aux=object_id
(@tablename)'
EXEC sp_executesql @sql3,
N'@tablename nvarchar(517),@aux int ',@tablename,@aux
Pero nada, no le puedo hacer que me devuelva el id de la
tablename.
Os paso tambien el codigo entero que me falla.
set @aux2=' DECLARE indices CURSOR FOR select i.name
from (sysindexes i inner join
sysfilegroups s on
i.groupid = s.groupid )
where id = object_id(@tablename) and
(i.indid=1 or i.indid=2) and i.indid < 255
and (i.OrigFillFactor > 0)'
set @sql3 = N'use '+ @nombres+' print db_name() '+
@aux2+' print db_name()'
EXEC sp_executesql @sql3,
N'@tablename nvarchar
(517),@h varchar(20) ',
@tablename,@h
open indices
FETCH NEXT
FROM indices
INTO @indexid
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT
FROM indices
INTO @indexid
end
close indices
deallocate indices
Muchas gracias por vuestra ayuda.
Saludos.
Leer las respuestas