Espero que haya encontrado una buena solución. Tuve el mismo problema, y la forma en que trabajé probablemente no sea la mejor, pero está funcionando ahora.
implica la creación de un servidor vinculado y el uso de sql dinámico, no el mejor, pero si alguien puede sugerir algo mejor, comente/responda.
declare @sql nvarchar(max)
DECLARE @DB_SPACE TABLE (
[DatabaseName] NVARCHAR(128) NOT NULL,
[FILEID] [smallint] NOT NULL,
[FILE_SIZE_MB] INT NOT NULL DEFAULT (0),
[SPACE_USED_MB] INT NULL DEFAULT (0),
[FREE_SPACE_MB] INT NULL DEFAULT (0),
[LOGICALNAME] SYSNAME NOT NULL,
[DRIVE] NCHAR(1) NOT NULL,
[FILENAME] NVARCHAR(260) NOT NULL,
[FILE_TYPE] NVARCHAR(260) NOT NULL,
[THE_AUTOGROWTH_IN_KB] INT NOT NULL DEFAULT(0)
,filegroup VARCHAR(128)
,maxsize VARCHAR(25)
PRIMARY KEY CLUSTERED ([DatabaseName] ,[FILEID])
)
SELECT @SQL ='SELECT [DatabaseName],
[FILEID],
[FILE_SIZE_MB],
[SPACE_USED_MB],
[FREE_SPACE_MB],
[LOGICALNAME],
[DRIVE],
[FILENAME],
[FILE_TYPE],
[THE_AUTOGROWTH_IN_KB]
,filegroup
,maxsize FROM OPENQUERY('+ QUOTENAME('THE_MONITOR') + ','''+ ' EXEC MASTER.DBO.monitoring_database_details ' +''')'
exec sp_executesql @sql
INSERT INTO @DB_SPACE(
[DatabaseName],
[FILEID],
[FILE_SIZE_MB],
[SPACE_USED_MB],
[FREE_SPACE_MB],
[LOGICALNAME],
[DRIVE],
[FILENAME],
[FILE_TYPE],
THE_AUTOGROWTH_IN_KB,
[filegroup],
maxsize
)
EXEC SP_EXECUTESQL @SQL
esto está trabajando para mí ahora. Puedo garantizar que el número de columnas y el tipo de columnas devueltas por el procedimiento almacenado son los mismos que en esta tabla, simplemente porque devuelvo la misma tabla del procedimiento almacenado.
gracias y saludos Marcelo
Una posibilidad más es que la intercalación de DB en su TEMP DB y la base de datos en la que está insertando no coinciden. –