Linked Servers on MS SQL: Part 1

Friday Oct 3rd 2003 by Don Schlichting
Share:

Share data between SQL and almost anything using Linked Servers.

What is a Linked Server?

Think of a Linked Server as an alias on your local SQL server that points to an external data source. This external data source can be Access, Oracle, Excel or almost any other data system that can be accessed by OLE or ODBC--including other MS SQL servers. An MS SQL linked server is similar to the MS Access feature of creating a "Link Table."

Why use a Linked Server?

With a linked server, you can create very clean, easy to follow, SQL statements that allow remote data to be retrieved, joined and combined with local data.

While it would be convenient to have all of our business data in one place, there are too many obstacles such as Vendor applications built for a specific data store, data sets too large for one server, legacy flat file applications that are cost prohibitive to recreate and changing business standards, preventing this from happening.

"Replication Manager" has made moving data from one SQL Server to another on a regular basis relatively easy. However, duplicating data to an application server is not always the best solution. If your source is large, and you cannot predict what subset of data you will need, then a linked server may be a better solution.

If you have a very large data set, there may be performance benefits to splitting your data into pieces, and moving those pieces onto different servers. Then using distributed partitioned views to present the data as one source. If so, linked servers are the technology that makes it possible.

Why not use a Linked Server?

If the remote data is not yours, and the owning department will not allow you remote access, then a linked server is out. You will have to rely on some type of scheduled pickup and exchange.

When absolute, best possible performance is required, local data will out perform a linked server.

If the physical link between your SQL Server and the remote data is slow, or not reliable, then a linked server is not a good solution.

History

Linked servers are a superset of "remote servers." Remote servers allowed the running of stored procedures on distributed SQL Server machines. SQL 2000 BOL states, "Support for remote servers is provided for backward compatibility only. New applications that must execute stored procedures against remote instances of SQL Server should use linked servers instead." Support for remote servers may be discontinued in the future. In addition, remote servers only allowed stored procedures to be run. Linked servers allow both stored procedures and ad hoc queries.

Distributed Transaction Coordinator (DTC)

Before starting the examples, we need to start the Distributed Transaction Coordinator. The DTC manages the committing of transactions when there are several different data sources involved. For Windows 2000, service pack 1 is required.

+ Open the services MMC, locate and start the Distributed Transaction Coordinator using the default settings.

SQL to Excel

In our first example, we will link an Excel sheet to an MS SQL server. The Excel example is a one-sheet copy of the SQL Pubs table Authors.


Click for larger image

Right-click to download the Excel Sheet

+ Open the SQL Enterprise Manager and navigate to Security/Linked Servers. Underneath, (No items) should be visible.

+ Right click the Linked Server icon and select New Linked Server.

+ Create a new linked server by entering any name in the Linked Server text box. Select "Other" as the data source, selecting the "Microsoft Jet 4" provider. The product is "Excel." The data source is the file path name. The Provider string is "Excel 8.0" for Excel versions 97, 2000, and 2002. Then click OK to finish.

Now in Enterprise Manager, under Linked Servers, the new "Excel_AUTHORS" server should appear with a table for each Excel Sheet.

To verify your connection, open SQL Query Analyzer and enter SELECT * FROM EXCEL_AUTHORS...Sheet1$. (3 dots between EXCEL_AUTHORS and Sheet1$) The author table should be returned.

Four-Part Naming

This type of query on a linked server access is called a "Direct Reference." We are directly referencing the object (Sheet1$ in this case) in our query, as opposed to using a function to help setup the connection, or executing a stored procedure located on the linked server. Direct Referencing only works when the OLE DB provider supports Four-Part Naming. The naming parts are Link Name, Database Name, Owner and Object. We will be exploring more on four-part naming when we start connecting to traditional databases as linked servers. For additional information on Four-Part Naming, see BOL Four-Part Naming or IDBSchemaRowset. IDBSchemaRowset is the meta data handler for linked servers.

Back to Excel



The first row of the Excel sheet has automatically been used as Column headings for our table, allowing us to query the Excel sheet in standard TSQL statements such as: SELECT address FROM EXCEL_AUTHORS...Sheet1$.





The usual DML (Data Manipulation Language) commands are also supported. Such as:

INSERT INTO EXCEL_AUTHORS...Sheet1$ 
	(address, au_fname)
VALUES
	(' 111 State St', 'Don')

This next return will verify our insert succeeded.

sp_addlinkedserver

Using the system stored procedure sp_addlinkedserver instead of Enterprise Manager can also create the linked server. Following is the sp syntax:

sp_addlinkedserver [ @server = ] 'server' 
    [ , [ @srvproduct = ] 'product_name' ] 
    [ , [ @provider = ] 'provider_name' ] 
    [ , [ @datasrc = ] 'data_source' ] 
    [ , [ @location = ] 'location' ] 
    [ , [ @provstr = ] 'provider_string' ] 
    [ , [ @catalog = ] 'catalog' ]

To repeat the Excel example used previously, use the following parameters:

EXEC sp_addlinkedserver 'EXCEL2',
	'Excel',
	'Microsoft.Jet.OLEDB.4.0',
	'c:\temp\authors.xls',
	NULL,
	'Excel 8.0',
	NULL

The location and catalog parameters are not used in our example. A select will verify that our link was successful.

Conclusion

Linked Servers are a great way to include outside data sources into your TSQL. There are providers for most desktop applications. In future articles, we will begin using security, passwords, additional Query Analyzer commands and connecting to SQL, Access and Oracle databases.

» See All Articles by Columnist Don Schlichting

Share:
Home
Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved