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

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

 

Konfiguration eines Microsoft-Verbindungsservers (Microsoft Linked Server) mit OLE DB

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 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.

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.

 Einrichten eines interaktiven Verbindungsservers
  1. Bei Microsoft SQL Server 2005/2008 starten Sie das SQL Server Management Studio. Bei anderen Versionen von SQL Server können der Name dieser Anwendung und die Schritte zum Einrichten des Verbindungsservers variieren.

    Erweitern Sie im Fensterausschnitt Objekt-Explorer den Eintrag Serverobjekte » Serverobjekte. Rechtsklicken Sie auf Verbindungsserver und klicken Sie auf Neuer Verbindungsserver.

  2. Füllen Sie die Seite Allgemein aus.

    Das Feld Verbindungsserver auf der Seite Allgemein muss den Namen eines Verbindungsservers enthalten (im obigen Beispiel SADATABASE).

    Die Option Andere Datenquelle muss aktiviert und SQL Anywhere OLE DB-Provider 12 aus der Liste Anbieter ausgewählt werden.

    Das Feld Produktname kann einen beliebigen Wert haben (z.B. "SQL Anywhere" oder den Namen Ihrer Anwendung).

    Das Feld Datenquelle kann einen ODBC-Datenquellennamen (DSN) enthalten. Dies ist lediglich eine Vereinfachung und ein Datenquellenname ist nicht erforderlich. Wenn Sie einen System-DSN verwenden, muss es sich bei 32-Bit-Versionen von SQL Server um einen 32-Bit-DSN handeln und bei 64-Bit-Versionen von SQL Server um einen 64-Bit-DSN.

    Datenquelle: SQL Anywhere 12 Demo

    Das Feld Anbieterzeichenfolge kann zusätzliche Verbindungsparameter enthalten, z.B. UserID (UID), ServerName (Server) und DatabaseFile (DBF).

    Anbieterzeichenfolge: Server=myserver;DBF=sample.db

    Das Feld Speicherort kann das Äquivalent des SQL Anywhere-Verbindungsparameters "Host" enthalten (z.B. localhost:4444 oder 10.25.99.253:2638).

    Speicherort: AppServer-pc:2639

    Die Feld Anfangskatalog kann den Namen der Datenbank enthalten, mit der eine Verbindung hergestellt werden soll (z.B. "demo"). Die Datenbank muss zuvor gestartet worden sein.

    Anfangskatalog: demo

    Die Kombination dieser letzten vier Felder sowie die Benutzer-ID und das Kennwort auf der Seite Sicherheit müssen genug Informationen enthalten, um eine Verbindung mit einem Datenbankserver herzustellen.

  3. Statt im Feld Anbieterzeichenfolge die Benutzer-ID und das Kennwort für die Datenbank als Verbindungsparameter anzugeben, können Sie die Seite Sicherheit ausfüllen. Damit vermeiden Sie, dass das Kennwort als Text angezeigt wird.

    Klicken Sie in SQL Server 2005/2008 auf die Option In folgendem Sicherheitskontext verwendet und füllen Sie die Felder Remoteanmeldung und Mit Kennwort aus. (Das Kennwort wird mit Sternchen angezeigt).

  4. Gehen Sie zur Seite Serveroptionen.

    Aktivieren Sie die Optionen RPC und 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. In SQL Server 2005/2008 handelt es sich bei diesen Optionen um TRUE/FALSE-Einstellungen. Setzen Sie die beiden Werte jeweils auf TRUE. Die Remoteprozeduraufruf-Optionen (RPC) 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 Anbieteroption 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 Anbieteroptionen auf die Seite, auf der Sie diese Option auswählen können. Klicken Sie bei SQL Server 2005/2008 mit der rechten Maustaste auf den SAOLEDB.12-Providernamen unter Verbindungsserver » Provider und klicken Sie auf Eigenschaften. Vergewissern Sie sich, dass das Kontrollkästchen InProcess zulassen aktiviert ist. Wenn die Option InProcess nicht ausgewählt wurde, schlagen die Abfragen fehl.

 Einrichten eines Verbindungsservers mit einem Skript
  • 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 SADATABASE), einen Datenquellennamen (im Beispiel SQL Anywhere 12 Demo), eine optionale Anbieterzeichenfolge (im Beispiel N'host=localhost:4444;server=myserver;dbn=demo') und 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',
         @provstr=N'host=localhost:4444;server=myserver;dbn=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