Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » OLE DB- und ADO-Entwicklung

 

Microsoft-Verbindungsserver

Sie können einen Microsoft-Verbindungsserver einrichten, der den SQL Anywhere OLE DB-Provider verwendet, um Zugriff auf eine SQL Anywhere-Datenbank zu erhalten. SQL-Abfragen können entweder mithilfe der vierteiligen Tabellenreferenzsyntax von Microsoft oder mit der OPENQUERY SQL-Funktion von Microsoft durchgeführt werden. Im Folgenden finden Sie ein Beispiel der vierteiligen Syntax:

SELECT * FROM SADATABASE.demo.GROUPO.Customers

In diesem Beispiel ist SADATABASE der Name des Verbindungsservers, demo der Name des Katalogs bzw. der Datenbank, GROUPO der Tabelleneigentümer in der SQL Anywhere-Datenbank und Customers der Tabellenname in der SQL Anywhere-Datenbank.

Die andere Form verwendet die OPENQUERY-Funktion von Microsoft.

SELECT * FROM OPENQUERY( SADATABASE, 'SELECT * FROM Customers' )

In der OPENQUERY-Syntax wird die zweite SELECT-Anweisung ('SELECT * FROM Customers') an den SQL Anywhere-Server zur Ausführung übergeben.

Bei komplexen Abfragen ist OPENQUERY möglicherweise die bessere Wahl, da die gesamte Abfrage auf dem SQL Anywhere-Server ausgewertet wird. Mit der vierteiligen Syntax ruft SQL Server möglicherweise den Inhalt aller von der Abfrage referenzierten Tabellen ab, bevor es sie auswerten kann (z.B. Abfragen mit WHERE oder JOIN, verschachtelte Abfragen usw.). Bei Abfragen mit sehr großen Tabellen kann die Verarbeitungszeit sehr lang sein, wenn Sie vierteilige Syntax verwenden. Im folgenden Beispiel für eine vierteilige Abfrage übergibt SQL Server eine einfache SELECT-Anweisung für die komplette Tabelle (keine WHERE-Klausel) über den OLE DB-Provider an den SQL Anywhere-Datenbankserver und wertet anschließend die WHERE-Bedingung selbst aus.

SELECT ID, Surname, GivenName FROM [SADATABASE].[demo].[GROUPO].[Customers]
WHERE Surname = 'Elkins'

Statt eine Zeile in der Ergebnismenge an SQL Server zurückzugeben, werden alle Zeilen zurückgegeben und anschließend wird diese Ergebnismenge von SQL Server auf eine Zeile reduziert. Im folgenden Beispiel wird ein identisches Ergebnis erzeugt, jedoch wird nur eine Zeile an SQL Server zurückgegeben.

SELECT * FROM OPENQUERY( SADATABASE, 
    'SELECT ID, Surname, GivenName FROM [GROUPO].[Customers]
    WHERE Surname = ''Elkins''' )

Sie können einen Verbindungsserver einrichten, der den SQL Anywhere OLE DB-Provider mit einer interaktiven Microsoft SQL Server-Anwendung oder einem SQL Server-Skript verwendet.

Hinweis

Bevor Sie einen Verbindungsserver einrichten, sollten Sie unter Windows Vista oder späteren Versionen von Windows ein paar Dinge beachten. SQL Server läuft auf Ihrem System als Dienst. Abhängig davon, wie der Dienst unter Windows Vista oder späteren Versionen von Windows eingerichtet ist, kann ein Dienst möglicherweise keine Verbindungen über den gemeinsam genutzten Speicher nutzen, keine Server starten und nicht auf Definitionen von Benutzerdatenquellen zugreifen. Beispiel: Ein als Netzwerkdienst angemeldeter Dienst kann weder Server starten noch eine Verbindung über Shared Memory herstellen oder auf Benutzerdatenquellen zugreifen. In solchen Fällen muss der SQL Anywhere-Server vorab gestartet und das TCP/IP-Kommunikationsprotokoll verwendet werden. Außerdem gilt: Wenn eine Datenquelle verwendet wird, muss es sich um eine Systemdatenquelle handeln.


Verbindungsserver mit einer interaktiven Anwendung einrichten
Verbindungsserver mit einem Skript einrichten