Wir versuchen, auf SQL Server 2014 zu migrieren. In mehreren Fällen müssen wir OpenQuery verwenden, um dynamische Ergebnisse zurückzugeben. Die Ergebnismengen unterscheiden sich je nach Eingabeparameter. Es hat in SQL 2008R2 funktioniert und ich muss es weiter betreiben. Es gibt jedoch den folgenden Fehler, den ich nicht beheben kann.
Die Metadaten konnten nicht ermittelt werden, da die Anweisung 'EXEC (@sQry)' in der Prozedur 'spTest' dynamisches SQL enthält. Verwenden Sie die WITH RESULT SETS-Klausel, um die Ergebnismenge explizit zu beschreiben.
Ich habe versucht, mit Ergebnismengen undefiniert, aber es gibt immer noch den gleichen Fehler.
SELECT * INTO tblTest
FROM OPENQUERY(LinkedServer, 'SET FMTONLY OFF EXEC spTest ''27'', null, null, null, ''%, Employed'' WITH RESULT SETS UNDEFINED')
Gibt es Alternativen oder umgeht dies?
Vielen Dank im Voraus.
Es gibt eine Problemumgehung, aber Sie werden es nicht mögen. Sie müssen eine Wrapper-Prozedur erstellen, die die Metadaten definiert und die ursprüngliche Prozedur basierend auf den Spalten ausführt, die dem Wrapper bereitgestellt werden. Hier ist ein Link zu einem MSDN-Blog, in dem die Vorgehensweise für sp_help_job besprochen wird.
Es hat im Jahr 2008 funktioniert, weil SSIS und seine Mitarbeiter in der Prozedur nach den Datentypen suchen würden. 2012 spielt sich nicht so ab, wenn Unklarheiten hinsichtlich der Metadaten bestehen. Der Wrapper hilft Ihnen beim Hinken, aber ich würde vorschlagen, das Verfahren besser an moderne Codierungsstandards anzupassen. Wie auch immer, hoffe das hilft!
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen