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

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Programmierung » OLE DB- und ADO-Entwicklung

 

Microsoft-Verbindungsserver (Microsoft Linked Server) mit OLE DB einrichten

Sie können einen Microsoft-Verbindungsserver (Microsoft Linked Server) 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 4-teiligen Tabellenreferenzsyntax von Microsoft oder mit der OPENQUERY SQL-Funktion von Microsoft durchgeführt werden. Im Folgenden finden Sie ein Beispiel der 4-teiligen Syntax:

SELECT * FROM SADATABASE..GROUPO.Customers

In diesem Beispiel ist SADATABASE der Name des Verbindungsservers, GROUPO ist der Tabelleneigentümer in der SQL Anywhere-Datenbank und Customers ist der Tabellenname in der SQL Anywhere-Datenbank. Der Katalogname wird ausgelassen (wie durch zwei aufeinander folgende Punkte angezeigt wird), da Katalognamen keine Funktion von SQL Anywhere-Datenbanken sind.

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.

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.

 ♦  So richten Sie einen Verbindungsserver interaktiv ein
  1. Bei Microsoft SQL Server 2005 starten Sie Microsoft SQL Server Management Studio. Bei anderen Versionen von SQL Server können der Name dieser Anwendung und die Schritte zum Einrichten des Verbindungsservers variieren.

    Führen Sie im Fensterausschnitt Object Explorer (Objekt-Explorer) in der Strukturdarstellung einen Drilldown zu Server Objects (Serverobjekte) » Linked Servers (Verbindungsserver) aus. Rechtsklicken Sie auf den Bereich Linked Servers(Verbindungsserver) und wählen Sie New Linked Server(Neuer Verbindungsserver).

  2. Füllen Sie die Seite General (Allgemein) aus.

    Das Feld Linked Server (Verbindungsserver) auf der Seite General (Allgemein) muss den Namen eines Verbindungsservers enthalten (wie z.B. SADATABASE in obigem Beispiel). Die Option Other Data Source(Andere Datenquelle) muss aktiviert und "SQL Anywhere OLE DB Provider 12" aus der Liste ausgewählt werden. Das Feld Product Name(Produktname) kann einen beliebigen Wert haben (zum Beispiel SQL Anywhere). Das Feld Data Source (Datenquelle) muss einen ODBC-Datenquellennamen enthalten (z.B. "SQL Anywhere 12 Demo"). Das Feld Provider String (Providerzeichenfolge) kann zusätzliche Verbindungsparameter enthalten wie DATABASEFILE (DBF). Lassen Sie anderen Felder, wie etwa Location (Speicherort) auf der Seite General (Allgemein), leer.

  3. Statt im Feld Provider String (Providerzeichenfolge) das Datenbankkennwort als Verbindungsparameter anzugeben, können Sie die Seite Security (Sicherheit) ausfüllen. Damit vermeiden Sie, dass das Kennwort als Text angezeigt wird.

    Wählen Sie in SQL Server 2005 die Option Be made using this security context (In folgendem Sicherheitskontext verwendet) und füllen Sie die Felder Remote Login (Remoteanmeldung) und With password (Mit Kennwort) aus (das Kennwort wird mit Sternchen angezeigt).

  4. Wählen Sie die Optionen RPC und RPC Out (RPC-Ausgabe).

    Das zu verwendende Verfahren variiert abhängig von den verschiedenen Versionen von Microsoft SQL Server. In SQL Server 2000 gibt es zwei Kontrollkästchen, die für diese beiden Optionen aktiviert werden müssen. Diese Kontrollkästchen befinden sich auf der Seite Server Options (Serveroptionen). In SQL Server 2005 handelt es sich bei diesen Optionen um TRUE/FALSE-Einstellungen. Setzen Sie die beiden Werte jeweils auf TRUE. Die RPC-Optionen (Remote Procedure Call, Remoteprozeduraufruf) müssen ausgewählt sein, um gespeicherte Prozeduren bzw. Funktionsaufrufe in einer SQL Anywhere-Datenbank auszuführen und Parameter erfolgreich zu übergeben bzw. zu empfangen.

  5. Wählen Sie die Provider-Option Allow Inprocess (InProcess zulassen) aus.

    Das zu verwendende Verfahren variiert abhängig von den verschiedenen Versionen von Microsoft SQL Server. In SQL Server 2000 bringt Sie die Schaltfläche Provider Options (Provideroptionen) auf die Seite, auf der Sie diese Option auswählen können. Klicken Sie bei SQL Server 2005 mit der rechten Maustaste auf den SAOLEDB.12-Provider in der Strukturdarstellung Linked Servers (Verbindungsserver)  » Provider und wählen Sie Properties (Eigenschaften). Vergewissern Sie sich, dass das Kontrollkästchen Allow Inprocess (InProcess zulassen) aktiviert ist. Wenn die InProcess-Option nicht ausgewählt wurde, schlagen die Abfragen fehl.

 ♦  So richten Sie einen Verbindungsserver mit einem Skript ein
  • Sie können einen Verbindungsserver mit einem SQL Server-Skript einrichten, wie im folgenden Beispiel dargestellt. Nehmen Sie die entsprechenden Änderungen am Skript vor der Ausführung unter SQL Server vor. Wählen Sie einen neuen Namen für den Verbindungsserver (im Beispiel wird SADATABASE verwendet), einen Datenquellennamen (SQL Anywhere 12 Demo im Beispiel) sowie eine ID für den entfernten Benutzer.



    USE [master]
    GO
    EXEC master.dbo.sp_addlinkedserver @server=N'SADATABASE', 
         @srvproduct=N'SQL Anywhere', @provider=N'SAOLEDB.12', 
         @datasrc=N'SQL Anywhere 12 Demo'
    GO
    EXEC master.dbo.sp_serveroption @server=N'SADATABASE', 
         @optname=N'rpc', @optvalue=N'true'
    GO
    EXEC master.dbo.sp_serveroption @server=N'SADATABASE', 
         @optname=N'rpc out', @optvalue=N'true'
    GO
    -- Set remote login
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'SADATABASE', 
         @locallogin = NULL , @useself = N'False', 
         @rmtuser = N'DBA', @rmtpassword = N'sql'
    GO
    -- Set global provider "allow in process" flag
    EXEC master.dbo.sp_MSset_oledb_prop N'SAOLEDB.12', N'AllowInProcess', 1