Cum se adaugă o bază de date Visual FoxPro la SQL Server ca server legat


Rezumat


SQL Server 7,0 și SQL Server 2000 permite adăugarea de surse de date externe ca servere legate. Această caracteristică oferă acces la interogări distribuite, eterogene, pentru sursele de date OLE DB. Acest articol vă arată cum să adăugați și să interogați prin programare o sursă de date Visual FoxPro ca server legat din Visual FoxPro.

Mai multe informații


sp_addlinkedserver este o procedură stocată nouă introdusă în SQL Server 7,0 și SQL SErver 2000. sp_addlinkedserver creează un server legat, care permite accesul la interogările distribuite, eterogene la sursele de date OLE DB. Sintaxa pentru adăugarea unui server legat din Transact-SQL este:
   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.
Următorul fragment de cod adaugă Visual FoxPro Database TestData. DBC din directorul SAMPLES\DATA în SQL Server ca server legat. Acest fragment de cod presupune că Visual FoxPro și SQL Server se execută pe același computer. Notă Utilizatorul, numele de utilizatortrebuie să aibă permisiuni pentru a efectua aceste operațiuni în baza de date.
   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
După ce ați rulat fragmentul de cod, deschideți SQL Server Enterprise Manager și extindeți nodul de servere legate. Rețineți că a fost adăugat un server legat denumit VFP.

Referințe


Pentru mai multe informații despre sp_addlinkedserver, căutați "sp_addlinkedserver" în fișierul de ajutor pentru referințe Transact-SQL.