Haben Sie etwas in Ihrem Objektnamen vergessen? Es sollte immer wie Database.User.ObjectName (z. B. Northwind.dbo.Customers)
seinGeben Sie den vollständigen Objektnamen ein, wenn Sie Abfragen über verknüpfte Server ausführen.
Die Abfrage für die gespeicherte Prozedur kann bei der Ausführung auf den Verbindungsservern so aussehen:
%Vor%Überprüfen Sie Optionen wie SET FMTONLY OFF, wenn Sie Stored Procedure ausführen.
Folgen Sie diesem Link für OPENQUERY: Ссылка
Das gleiche Problem für mich: Ich habe es gelöst, indem ich nur das "Ziel" -Objekt repariert habe, das nicht korrekt benannt wurde.
In meinem Fall habe ich nach [testDb].[Business.Customer]
table gesucht, aber der korrekte Name war [testDb].[Business].[Customer]
... der gleiche Fehler wie bei dir:
Il Provider OLE DB "SQLNCLI10" pro Servercollegato "RIBOWEB10 \ SQLEXPRESS" ha restitituo il messaggio "Zurückgestellt vorbereiten konnte nicht abgeschlossen werden. ".
Ich denke, dass SQL Server versucht, Namen dynamisch aufzulösen, die nicht direkt mit realen Objekten übereinstimmen, aber nicht sicher sind.
Ganz einfach, ich hoffe, das hilft:)
Auch wenn Sie in Ihrer Abfrage eine Spalte falsch benannt haben, wird dieser Fehler angezeigt. Beispiel:
%Vor% und der Spaltenname ist column
, nicht colunm
.
Unter dem Strich wird die tatsächliche Abfrage, die zuerst an den Remote-Server gesendet werden soll, auf Korrektheit überprüft und dann in openquery
umgebrochen und erneut getestet.
Ich hatte den gleichen Fehler beim Abfragen über einen Verbindungsserver. Ich habe jedoch eine Ansicht auf dem Zielserver abgefragt, keine gespeicherte Prozedur.
Die Ansicht des Zielservers wurde wie folgt erstellt:
%Vor%Um das Problem zu beheben, habe ich eine alter-Ansicht erstellt und die beiden UNION-Anweisungen in eine Unterabfrage eingeschlossen, wie folgt:
%Vor%Muss ein Metadatenproblem mit der ursprünglichen Ansicht sein.
Hoffe das hilft dir!
Tags und Links sql-server sql-server-2008 stored-procedures linked-server