Ich hatte das gleiche Problem, und die Art und Weise, wie ich es umgangen habe, ist wahrscheinlich nicht die beste, aber es funktioniert jetzt.
Es beinhaltet die Erstellung eines verknüpften Servers und die Verwendung von Dynamic Sql - nicht das Beste, aber wenn jemand etwas Besseres vorschlagen kann, bitte kommentieren/antworten.
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
Das funktioniert jetzt bei mir. Ich kann garantieren, dass die Anzahl der Spalten und der Typ der Spalten, die von der gespeicherten Prozedur zurückgegeben werden, die gleichen sind wie in dieser Tabelle, einfach weil ich dieselbe Tabelle von der gespeicherten Prozedur zurückgebe.
2 Stimmen
Eine weitere Möglichkeit ist, dass die DB-Kollation Ihrer TEMP-DB und der DB, in die Sie einfügen, nicht übereinstimmen.
4 Stimmen
Ist dies nicht höchst anfechtbar, weil die Schemata der Tabellen nicht veröffentlicht wurden? "Ich bin mir sicher" reicht nicht aus: Wir alle waren schon oft genug in Situationen, in denen wir den Wald vor lauter Bäumen nicht sehen konnten, um zu wissen, dass unsere eigene Gewissheit bedauerlicherweise falsch sein kann, und es braucht eine angemessene Menge an Informationen über das Problem, damit jemand anderes uns auf das Offensichtliche hinweist, das wir übersehen haben.
1 Stimmen
Sie sollten auch einen Blick auf alle Auslöser werfen. Sie erhalten genau die gleiche Meldung, wenn Sie einen schlecht geschriebenen Trigger haben, der in etwas wie eine Prüfungstabelle einfügt.