如何让远程数据库中的1张表导入到本地数据库中,数据库都是SQL SERVER 2000
2011-10-08 12:56
399 查看
在本地数据库执行如下的语句:
insertintoInfo
select*
fromOPENDATASOURCE('SQLOLEDB','DataSource=[ServerName];UserID=[UserID];Password=[Password]').MyServer.DBO.Info
说明:
(1)ServerName:数据库服务器的名称,也可以是IP地址。
(2)UserID:登录服务器的用户ID号。
(3)Password:用户密码。
(4)下面的语句最好写在一个存储过程中执行,一定不要放在SQL属性中。
语法
OPENDATASOURCE(provider_name,init_string
)
参数
provider_name
注册为用于访问数据源的OLEDB提供程序的PROGID的名称。provider_name的数据类型为
char,没有默认值。
init_string
连接字符串,这些字符串将要传递给目标提供程序的IDataInitialize接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:"keyword1=value;keyword2=value."
在Microsoft®DataAccessSDK中定义了基本语法。有关所支持的特定关键字值对的信息,请参见提供程序中的文档。下表列出
init_string参数中最常用的关键字。
注释
OPENDATASOURCE函数可以在能够使用链接服务器名的相同Transact-SQL语法位置中使用。因此,就可以将OPENDATASOURCE用作四部分名称的第一部分,该名称指的是SELECT、INSERT、UPDATE或DELETE语句中的表或视图的名称;或者指的是EXECUTE语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE应该指的是另一个SQLServer。OPENDATASOURCE不接受参数变量。
与OPENROWSET函数类似,OPENDATASOURCE应该只引用那些不经常访问的OLEDB数据源。对于访问次数稍多的任何数据源,请为它们定义链接的服务器。无论OPENDATASOURCE还是OPENROWSET都不能提供链接的服务器定义的全部功能,例如,安全管理以及查询目录信息的能力。每次调用OPENDATASOURCE时,都必须提供所有的连接信息(包括密码)。
示例
下面的示例访问来自某个表的数据,该表在SQLServer的另一个实例中。
下面是个查询的示例,它通过用于Jet的OLEDB提供程序查询Excel电子表格。
insertintoInfo
select*
fromOPENDATASOURCE('SQLOLEDB','DataSource=[ServerName];UserID=[UserID];Password=[Password]').MyServer.DBO.Info
说明:
(1)ServerName:数据库服务器的名称,也可以是IP地址。
(2)UserID:登录服务器的用户ID号。
(3)Password:用户密码。
(4)下面的语句最好写在一个存储过程中执行,一定不要放在SQL属性中。
OPENDATASOURCE
不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。语法
OPENDATASOURCE(provider_name,init_string
)
参数
provider_name
注册为用于访问数据源的OLEDB提供程序的PROGID的名称。provider_name的数据类型为
char,没有默认值。
init_string
连接字符串,这些字符串将要传递给目标提供程序的IDataInitialize接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:"keyword1=value;keyword2=value."
在Microsoft®DataAccessSDK中定义了基本语法。有关所支持的特定关键字值对的信息,请参见提供程序中的文档。下表列出
init_string参数中最常用的关键字。
关键字 | OLEDB属性 | 有效值和描述 |
---|---|---|
数据源 | DBPROP_INIT_DATASOURCE | 要连接的数据源的名称。不同的提供程序用不同的方法对此进行解释。对于SQLServerOLEDB提供程序来说,这会指明服务器的名称。对于JetOLEDB提供程序来说,这会指明.mdb文件或.xls文件的完整路径。 |
位置 | DBPROP_INIT_LOCATION | 要连接的数据库的位置。 |
扩展属性 | DBPROP_INIT_PROVIDERSTRING | 提供程序特定的连接字符串。 |
连接超时 | DBPROP_INIT_TIMEOUT | 超时值,在该超时值后,连接尝试将失败。 |
用户ID | DBPROP_AUTH_USERID | 用于该连接的用户ID。 |
密码 | DBPROP_AUTH_PASSWORD | 用于该连接的密码。 |
目录 | DBPROP_INIT_CATALOG | 连接到数据源时的初始或默认的目录名称。 |
OPENDATASOURCE函数可以在能够使用链接服务器名的相同Transact-SQL语法位置中使用。因此,就可以将OPENDATASOURCE用作四部分名称的第一部分,该名称指的是SELECT、INSERT、UPDATE或DELETE语句中的表或视图的名称;或者指的是EXECUTE语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE应该指的是另一个SQLServer。OPENDATASOURCE不接受参数变量。
与OPENROWSET函数类似,OPENDATASOURCE应该只引用那些不经常访问的OLEDB数据源。对于访问次数稍多的任何数据源,请为它们定义链接的服务器。无论OPENDATASOURCE还是OPENROWSET都不能提供链接的服务器定义的全部功能,例如,安全管理以及查询目录信息的能力。每次调用OPENDATASOURCE时,都必须提供所有的连接信息(包括密码)。
示例
下面的示例访问来自某个表的数据,该表在SQLServer的另一个实例中。
SELECT* FROMOPENDATASOURCE( 'SQLOLEDB', 'DataSource=ServerName;UserID=MyUID;Password=MyPass' ).Northwind.dbo.Categories
下面是个查询的示例,它通过用于Jet的OLEDB提供程序查询Excel电子表格。
SELECT* FROMOpenDataSource('Microsoft.Jet.OLEDB.4.0', 'DataSource="c:\Finance\account.xls";UserID=Admin;Password=;Extendedproperties=Excel5.0')...xactions
如:
select*fromOPENDATASOURCE('SQLOLEDB','DataSource=192.168.0.123;UserID=[sa];Password=[pwd]).database.DBO.