Last Update: 11 November 2011
Product: StarSQL
Version: 5.x
Article ID: SQV00SQ004
SQL Server linked servers can be used to access DB2 through a StarSQL ODBC data source. This document demonstrates how to add and use a linked server. These instructions apply to SQL Server 2000, SQL Server 2005, SQL Server 2008, and SQL Server 2008R2.
Perform the following steps to configure, test, and use a linked server.
StarSQL (64-bit) users should review the StarQuest Technical Document Considerations for using StarSQL (64-bit) with SQL Server 2005/2008.
OR: In the "Provider String" field, enter a DSN-less connection string; see Using a DSN-less Connection with StarSQL.
If an error occurs while testing the linked server connection, review the error and make changes to the linked server configuration as necessary.
In the Enterprise Manager, expand the new linked server and click on Tables to display a table list.
In the Management Studio, click on the New Query button and execute a query using the samples below as a guideline.
In the Management Studio, expand the linked server node and then expand the Catalogs node. Click on the node for the linked server and expand the Tables to view a table list.
The following examples demonstrate how to use a linked server to execute SELECT, INSERT, UPDATE, and DELETE statements. Execute these statements in either the SQL Server 2000 Query Analyzer or the SQL Server 2005/2008 New Query field. These examples assume the following:
To perform a SELECT on the table:
SELECT * FROM STARSQLDSN.<catalog>.BOOKS.TITLES
OR
SELECT * FROM OPENQUERY (STARSQLDSN, 'SELECT * FROM BOOKS.TITLES')
OR
EXEC ('SELECT * FROM BOOKS.TITLES') AT STARSQLDSN
Note: Using EXEC requires enabling the RPC & RPC Out checkboxes in the properties of the Linked Server.
To INSERT a row into the table:
INSERT INTO STARSQLDSN.<catalog>.BOOKS.TITLES (TITLE) VALUES ('The Grapes of Wrath')
OR
INSERT INTO OPENQUERY (STARSQLDSN, 'SELECT * FROM BOOKS.TITLES') (TITLE) VALUES ('The Grapes of Wrath')
To UPDATE a row in the table:
UPDATE STARSQLDSN.<catalog>.BOOKS.TITLES SET TITLE = 'Of Mice and Men' WHERE TITLE = 'The Grapes of Wrath'
OR
UPDATE OPENQUERY (STARSQLDSN, 'SELECT * FROM BOOKS.TITLES') SET TITLE = 'Of Mice and Men' WHERE TITLE = 'The Grapes of Wrath'
To DELETE a row in the table:
DELETE STARSQLDSN.<catalog>.BOOKS.TITLES WHERE TITLE = 'The Grapes of Wrath'
OR
DELETE OPENQUERY (STARSQLDSN, 'SELECT * FROM BOOKS.TITLES') WHERE TITLE = 'The Grapes of Wrath'
Depending on your environment and requirements, the following suggestions may enhance your performance:
Dynamic Parameter; Nested queries; Allow inprocess; Non transacted updates; Index as access path; Supports 'Like' operator.
We recommend that you do not enable "Level zero only"; see below for the error message that will result. Note that these settings will apply to all Linked Servers using the MSDASQL provider.
If the table being accessed has an index defined on more than 16 columns, you may receive this error message:
OLE DB provider "MSDASQL" for linked server "<linkedserver>" returned an invalid index definition for table ""<catalog>"."<schema>"."<tablename>"".As a workaround, either use the OPENQUERY syntax to query this table or remove the offending index. Refer to the "Maximum Capacity Specifications for SQL Server" section of the SQL Server Books Online for more information.
If the MSDASQL provider has been configured for "Level zero only", you may receive this error message when executing a SQL statement using four-part naming (e.g. SELECT * FROM STARSQLDSN.MYRDB.BOOKS.TITLE)):
Invalid use of schema or catalog for OLE DB provider "MSDASQL" for linked server "SQLSQLDSN". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.Solution: either open the properties of the MSDASQL provider (under Linked Servers/Providers) and uncheck "Level zero only", or use the OPENQUERY or EXEC syntax.
If you are using a clustered SQL Server environment, it may be necessary to restart SQL Server services on all machines for changes to take effect.
[STARSQLDSN].[MYRDB].[BOOKS].[TITLE] contains no columns that can be inserted or the current user does not have permissions on that object.
Solution: enter the desired SQL statement in the Query Window.
The information in technical documents comes without any warranty or applicability for a specific purpose. The author(s) or distributor(s) will not accept responsibility for any damage incurred directly or indirectly through use of the information contained in these documents. The instructions may need to be modified to be appropriate for the hardware and software that has been installed and configured within a particular organization. The information in technical documents should be considered only as an example and may include information from various sources, including IBM, Microsoft, and other organizations.