Provides ad hoc connection information as part of a four-part object name without using a linked server name.

Topic link iconTransact-SQL Syntax Conventions


OPENDATASOURCE ( provider_name, init_string )


  • provider_name
    Is the name registered as the PROGID of the OLE DB provider used to access the data source. provider_name is a char data type, with no default value.
  • init_string
    Is the connection string passed to the IDataInitialize interface of the destination provider. The provider string syntax is based on keyword-value pairs separated by semicolons, such as: 'keyword1=value;keyword2=value'.

    For specific keyword-value pairs supported on the provider, see the Microsoft Data Access SDK. This documentation defines the basic syntax. The following table lists the most frequently used keywords in the init_string argument.

    Keyword OLE DB property Valid values and description

    Data Source


    Name of the data source to connect to. Different providers interpret this in different ways. For SQL Native Client OLE DB provider, this indicates the name of the server. For Jet OLE DB provider, this indicates the full path of the .mdb file or .xls file.



    Location of the database to connect to.

    Extended Properties


    The provider-specific connect-string.

    Connect timeout


    Time-out value after which the connection try fails.

    User ID


    User ID to be used for the connection.



    Password to be used for the connection.



    The name of the initial or default catalog when connecting to the data source.

    Integrated Security


    SSPI, to specify Windows authentication


OPENDATASOURCE can be used to access remote data from OLE DB data sources only when the DisallowAdhocAccess registry option is explicitly set to 0 for the specified provider, and the Ad Hoc Distributed Queries advanced configuration option is enabled. When these options are not set, the default behavior does not allow for ad hoc access.

The OPENDATASOURCE function can be used in the same Transact-SQL syntax locations as a linked-server name. Therefore, OPENDATASOURCE can be used as the first part of a four-part name that refers to a table or view name in a SELECT, INSERT, UPDATE, or DELETE statement, or to a remote stored procedure in an EXECUTE statement. When executing remote stored procedures, OPENDATASOURCE should refer to another instance of SQL Server. OPENDATASOURCE does not accept variables for its arguments.

Like the OPENROWSET function, OPENDATASOURCE should only reference OLE DB data sources that are accessed infrequently. Define a linked server for any data sources accessed more than several times. Neither OPENDATASOURCE nor OPENROWSET provide all the functionality of linked-server definitions, such as security management and the ability to query catalog information. All connection information, including passwords, must be provided every time that OPENDATASOURCE is called.


Windows Authentication is much more secure than SQL Server Authentication. You should use Windows Authentication whenever possible. OPENDATASOURCE should not be used with explicit passwords in the connection string.


Any user can execute OPENDATASOURCE. The permissions that are used to connect to the remote server are determined from the connection string.


The following example creates an ad hoc connection to the Payroll instance of SQL Server on server London, and queries the AdventureWorks.HumanResources.Employee table.

    'Data Source=London\Payroll;Integrated Security=SSPI')

See Also


sp_addlinkedserver (Transact-SQL)

Other Resources

Distributed Queries
Identifying a Data Source by Using an Ad Hoc Name

Help and Information

Getting SQL Server 2005 Assistance

Change History

Release History

14 April 2006

New content:
  • Added the example.