Een Visual FoxPro-database toevoegen aan SQL Server als een gekoppelde server

In dit artikel wordt uitgelegd hoe u programmatisch een Visual FoxPro-gegevensbron toevoegt en opvraagt als een gekoppelde server vanuit Visual FoxPro.

Oorspronkelijke productversie: Visual FoxPro
Origineel KB-nummer: 199131

Samenvatting

SQL Server 7.0 en SQL Server 2000 kunnen externe gegevensbronnen als gekoppelde servers worden toegevoegd. Deze functie biedt toegang tot het distribueren van heterogene query's op OLE DB-gegevensbronnen. Dit artikel laat zien hoe u programmatisch een Visual FoxPro-gegevensbron toevoegt en opvraagt als een gekoppelde server vanuit Visual FoxPro.

Meer informatie

sp_addlinkedserveris een nieuwe opgeslagen procedure die is geïntroduceerd in SQL Server 7.0 en SQL Server 2000. sp_addlinkedserver maakt een gekoppelde server, die toegang biedt tot het distribueren van heterogene query's op OLE DB-gegevensbronnen.

De syntaxis voor het toevoegen van een gekoppelde server vanuit Transact - SQL is:

 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.

Met het volgende codefragment wordt de Visual FoxPro-database Testdata.DBC uit de map SAMPLES\DATA toegevoegd aan SQL Server als een gekoppelde server. In dit codefragment wordt ervan uitgegaan dat Visual FoxPro en SQL Server op dezelfde computer worden uitgevoerd.

Opmerking

De gebruiker, Gebruikersnaam, moet machtigingen hebben om deze bewerkingen uit te voeren op de database.

 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

Nadat u het codefragment hebt uitgevoerd, opent u SQL Server Enterprise Manager en vouwt u het knooppunt Gekoppelde servers uit. Er is een gekoppelde server met de naam VFP toegevoegd.

Verwijzingen

Zoek in het Help-bestand Transact - SQL-referentie voor meer informatie oversp_addlinkedserversp_addlinkedserver.