Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie eine Visual FoxPro-Datenquelle programmgesteuert als verknüpften Server von Visual FoxPro hinzufügen und abfragen.
Originalproduktversion: Visual FoxPro
Ursprüngliche KB-Nummer: 199131
Übersicht
SQL Server 7.0 und SQL Server 2000 ermöglichen das Hinzufügen externer Datenquellen als verknüpfte Server. Dieses Feature bietet Zugriff auf verteilungs- und heterogene Abfragen für OLE DB-Datenquellen. In diesem Artikel wird gezeigt, wie Sie eine Visual FoxPro-Datenquelle programmgesteuert als verknüpften Server von Visual FoxPro hinzufügen und abfragen.
Weitere Informationen
sp_addlinkedserver
ist eine neue gespeicherte Prozedur, die in SQL Server 7.0 und SQL Server 2000 eingeführt wurde.
sp_addlinkedserver
erstellt einen verknüpften Server, der den Zugriff auf verteilungs- und heterogene Abfragen für OLE DB-Datenquellen ermöglicht.
Die Syntax zum Hinzufügen eines verknüpften Servers aus Transact – SQL lautet:
sp_addlinkedserver [@server =] 'server',
[@srvproduct =] 'product_name',
[@provider =] 'provider_name',
[@datasrc =] 'data_source',
[@location =] 'location',
[@provstr =] 'provider_string',
[@catalog =] 'catalog'[@server =] 'server' Is the name of the linked server to
create with sp_addlinkedserver.
[@srvproduct =] 'product_name' Is the product name of the OLE DB data
source to add as a linked server.
[@provider =] 'provider_name' Is the unique provider identifier of the
OLE DB provider corresponding to the
data source.
[@datasrc =] 'data_source' Is the name of the data source, as
interpreted by the OLE DB provider.
[@location =] 'location' Is the location of or path to the
database as interpreted by the OLE DB
provider.
[@provstr =] 'provider_string' Is the OLE DB provider-specific.
[@catalog =] 'catalog' Is the catalog to be used when making a
connection to the OLE DB provider.
Der folgende Codeausschnitt fügt die Visual FoxPro-Datenbank Testdata.DBC
aus dem VERZEICHNIS SAMPLES\DATA zu SQL Server als verknüpften Server hinzu. Dieser Codeausschnitt geht davon aus, dass Visual FoxPro und SQL Server auf demselben Computer ausgeführt werden.
Notiz
Der Benutzer, Benutzername, muss über Berechtigungen zum Ausführen dieser Vorgänge für die Datenbank verfügen.
Source_Path=IIF(VAL(SUBSTR(VERSION(),15,2))=6,HOME(2),HOME()+"SAMPLES\")
Connect_String='DRIVER={SQL Server};' + ;
'SERVER=MY_SERVER;DATABASE=PUBS;UID=UserName;PWD=StrongPassword'
gnConnHandle=SQLSTRINGCONN(Connect_String)
IF gnConnHandle > 0
* Create a command string to pass to SQL Server via SQLExec
SQLCommand="sp_addlinkedserver 'VFP','','MSDASQL',NULL,NULL,"+ ;
"'DRIVER={Microsoft Visual FoxPro Driver};" + ;
"SourceDB="+Source_Path+"DATA\TESTDATA.DBC;SourceType=DBC;NULL'"* CREATE the LINKED Server"
Create_Linked_Server=SQLExec(gnConnHandle,SQLCommand)
IF Create_Linked_Server > 0
* The linked server was successfully created
* Run the query
=RunQuery()
ELSE
* The Linked Server either already exists or the command failed.
* Test for existence of linked server with aerror()
=AERROR(s_failed)
IF "VFP' ALREADY EXISTS."$UPPER(s_failed[1,2])
* The linked server exists, so run the query
=RunQuery()
ELSE
* The linked server doesn't exist, so display a message
=MESSAGEBOX(s_failed[1,2],32,'Failed')
ENDIF
ENDIF
=SQLDISCONN(gnConnHandle)
ENDIF
PROCEDURE RunQuery
SQLCommand="SELECT * FROM OPENQUERY(VFP,'SELECT * FROM CUSTOMER')"
QRYVal=SQLExec(gnConnHandle,SQLCommand,'SQLRESULTS')
IF QRYVal > 0
SELECT SQLResults
BROW
ELSE
=AERROR(L_Server)
=MESSAGEBOX(L_Server[1,2],32,'Query Failed')
ENDIF
RETURN
Öffnen Sie nach dem Ausführen des Codeausschnitts SQL Server Enterprise Manager, und erweitern Sie den Knoten "Verknüpfte Server". Ein verknüpfter Server mit dem Namen VFP wurde hinzugefügt.
Quellen
Weitere Informationen über sp_addlinkedserver
finden Sie, indem Sie in der Hilfedatei der Transact-SQL-Referenz nach sp_addlinkedserver
suchen.