Richtlinien für die Verwendung von verteilten Abfragen
Aktualisiert: 17. Juli 2006
Wenn der Anbieter die erforderlichen OLE DB-Schnittstellen unterstützt, sind alle im Folgenden genannten Transact-SQL-Anweisungsklassen zugelassen.
Transact-SQL-Anweisungen
Die folgende Liste enthält die Teilmengen der Transact-SQL-Sprache, die für Remotetabellen zulässig sind, auf die über Verbindungsservernamen oder über Ad-hoc-Namen zugegriffen wird:
- Alle Abfragen in der Standardform SELECT select_list FROM-Klausel WHERE-Klausel sind zulässig. Die INTO new_table_name-Klausel in SELECT-Anweisungen ist nicht zulässig, wenn new_table_name auf eine Remotetabelle verweist.
- In SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen können Spalten in Remotetabellen nicht mit einem einteiligen oder vierteiligen Tabellennamen gekennzeichnet werden. Den Remotetabellen sollte in der FROM-Klausel ein Alias zugeordnet werden, und der Aliasname sollte zur Kennzeichnung des Spaltennamens verwendet werden.
- Tabellen, die xml-Spalten enthalten, können nicht abgefragt werden, selbst wenn mit der Abfrage auf Nicht-xml-Spalten der Tabelle zugegriffen wird.
- Wenn eine LOB-Spalte (Large OBject) einer Remotetabelle als Element in der select_list einer SELECT-Anweisung angegeben wird, darf die SELECT-Anweisung keine ORDER BY-Klausel enthalten.
- Die Prädikate IS NULL und IS NOT NULL können nicht auf LOB-Spalten in einer Remotetabelle verweisen.
- GROUP BY ALL ist in einer verteilten Abfrage nicht zulässig, wenn die Abfrage auch eine WHERE-Klausel enthält. GROUP BY ohne die Angabe von ALL wird unterstützt.
- INSERT-Anweisungen können auf Remotetabellen angewendet werden, sofern der Anbieter die OLE DB-Anforderungen für INSERT-Anweisungen erfüllt. Weitere Informationen finden Sie unter INSERT-Anforderungen für OLE DB-Anbieter.
- NULL-Konstanten können nicht über eine verteilte Abfrage in eine timestamp-Spalte eingefügt werden.
- $IDENTITY und $ROWGUIDCOL werden für verteilte Abfragen nicht unterstützt. Explizite Werte können in Remotetabellen nicht in identity-Spalten eingefügt werden.
- UPDATE- und DELETE-Anweisungen können auf Remotetabellen angewendet werden, sofern der Anbieter die OLE DB-Schnittstellenanforderungen für die angegebene Tabelle erfüllt. Weitere Informationen finden Sie unter UPDATE- und DELETE-Anforderungen für OLE DB-Anbieter.
- Eine Remotetabelle kann durch einen für eine verteilte Abfrage definierten Cursor aktualisiert oder gelöscht werden, wenn die Remotetabelle in der UPDATE- oder DELETE-Anweisung angegeben ist (UPDATE oder DELETE remote_table WHERE CURRENT OF cursor_name), sofern der Anbieter die Bedingungen für Aktualisierbarkeit der Remotetabelle erfüllt. Weitere Informationen finden Sie unter Verwenden von Cursorn mit verteilten Abfragen.
- READTEXT-, WRITETEXT- und UPDATETEXT-Anweisungen können nicht auf Remotetabellen angewendet werden.
- Auf Spalten mit LOB-Datentypen (Large Object, z. B. text, ntext oder image) kann bei Aktualisierungs- oder Einfügevorgängen nicht verwiesen werden, wenn der Anbieter außerhalb des SQL Server-Prozesses instanziiert wird; die Anbieteroption AllowInProcess entspricht 0. Weitere Informationen finden Sie unter Konfigurieren von OLE DB-Anbietern für verteilte Abfragen.
- DDL-Anweisungen (Data Definition Language, Datendefinitionssprache) wie CREATE, ALTER oder DROP sind für Verbindungsserver nicht zulässig.
- Die EXECUTE-Anweisung, mit der ein Pass-Through-Befehl angegeben wird, wird für Verbindungsserver unterstützt. Mit dieser Anweisung können gespeicherte Prozeduren für andere Anbieter als SQL Server ausgeführt werden.
- Es sind keine anderen Operationen oder Anweisungen auf Datenbankebene für Verbindungsserver zulässig.
Weitere Richtlinien
Es gelten folgende zusätzliche Einschränkungen und Richtlinien:
- STATIC- oder INSENSITIVE-Cursor können auf Remotetabellen verweisen. Keysetgesteuerte Cursor können auf Remotetabellen verweisen, wenn der OLE DB-Anbieter bestimmte Anforderungen erfüllt. Weitere Informationen zu diesen Anforderungen finden Sie unter Anforderungen für OLE DB-Anbieter in Bezug auf die Verwendung keysetgesteuerter Cursor. Es können keine anderen Cursortypen auf eine Remotetabelle verweisen.
- Gespeicherte Prozeduren werden nur für SQL Server-Datenquellen unterstützt.
- Die Optionen ANSI_NULLS und ANSI_WARNINGS müssen für eine Verbindung auf ON festgelegt sein, damit verteilte Abfragen ausgeführt werden können. Weitere Informationen finden Sie unter SET ANSI_DEFAULTS (Transact-SQL).
Siehe auch
Konzepte
Verwenden von Transaktionen mit verteilten Abfragen
Datentypzuordnung mit verteilten Abfragen
Verteilte Abfragen
Andere Ressourcen
SELECT (Transact-SQL)
EXECUTE (Transact-SQL)
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
17. Juli 2006 |
|