专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » mssql连接器:MSSQL跨服务器连接的几种思路方法 »正文

mssql连接器:MSSQL跨服务器连接的几种思路方法

来源: 发布时间:星期三, 2008年12月17日 浏览:142次 评论:0
="t18">下面对 MSSQL 跨服务器连接方式整理总结下:

1 OPENDATASOURCE

在SQL文中直接用此语句打开数据库举例

OPENDATASOURCE(
'SQLOLEDB',
'Data Source=TQDBSV001;User ID=fish;Password=2312').RackDB.dbo.CS

很简单但是速度很慢

2 OPENROWSET

不想打字了网上粘得我试验过可以用但我没有用致使多种思路方法而已我不知道他有什么特别用途!

包括从 OLE DB 资料来源存取远端资料需要所有连线资讯这个思路方法是在连结伺服器存取资料表替代思路方法而且是使用 OLE DB 连线和存取远端资料次、特定思路方法OPENROWSET 可以在查询 FROM 子句中当作资料表名称来参考根据 OLE DB Provider 能力OPENROWSET 也可以当作 Insert、Update 或 Delete 陈述式目标资料表来参考虽然查询可能会传回多个结果集OPENROWSET 只传回第个结果集
语法
OPENROWSET ( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_' }
, { [ catalog.] [ schema.] object
| 'query' }
)
引数
'provider_name'
代表登录中指定 OLE DB Provider 亲和名称的字元字串provider_name 没有预设值
'datasource'
是对应到特殊 OLE DB 资料来源字串常数datasource 是要传送到提供者 IDBProperties 介面以化提供者 DBPROP_INIT_DATASOURCE 属性般而言此字串包括资料库档案名称、资料库伺服器名称或提供者了解并用以寻找资料库名称
'user_id'
是要传送到指定 OLE DB Provider 使用者名称字串常数user_id 指定连线安全性内容且以 DBPROP_AUTH_USERID 属性传送以化提供者
'password'
是要传送到 OLE DB Provider 使用者密码字串常数化提供者时password 以 DBPROP_AUTH_PASSWORD 属性传送
'provider_'
是以 DBPROP_INIT_PROVIDERSTRING 属性传送以化 OLE DB Provider 特定提供者连线字串provider_ 般会包含所有化提供者时需要所有连线资讯
catalog
是有指定物件资料库目录或资料库名称
schema
是指定物件结构描述或物件拥有者名称
object
指定要操作物件的物件名称
'query'
传送到提供者并由提供者执行字串常数MicrosoftR SQL Server? 不处理此查询但处理由提供者传回查询结果 (传递查询)传递查询用在不经由资料表名称而只经由命令语言显露其表格资料提供者时非常有用只要查询提供者支援 OLE DB Command 物件及其强制介面远端伺服器就支援传递查询如需详细资讯请参阅 SQL Server OLE DB Programmer's Reference
备注
如果 OLE DB Provider 支援指定资料来源中多个目录和结构描述就需要资料库目录和结构描述名称如果 OLE DB Provider 不支援可以省略 catalog 和 schema
如果提供者只支援结构描述名称必须指定 schema.object 格式的两个部份名称如果提供者只支援资料库目录名称必须指定 catalog.schema.object 格式的 3个部份名称
OPENROWSET 不接受变数作为其引数
权限
OPENROWSET 权限由传送到 OLE DB Provider 使用者名称权限来决定
范例
A. 使用有 Select OPENROWSET 和 Microsoft OLE DB Provider for SQL Server
以下范例使用 Microsoft OLE DB Provider for SQL Server以存取命名为 seattle1 远端伺服器上 pubs 资料库 authors 资料表从 datasource、user_id 和 password 化提供者且使用 Select 来定义传回资料列集
格式:
Select a.*
FROM OPENROWSET('SQLOLEDB’,'ServerName';'LoginUser';'Password',
'Select * FROM [DatabaseName].dbo.TableName orDER BY ColName1, ColName12') AS a
介绍说明:查询所提供驱动(SQLOLEDB是查询SQL Server)查询SQL服务器ServerName下Databasename中数据TableName表中数据(SQL语句)其实用户权限是LoginUser
例子:
USE pubs
GO
Select a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
'Select * FROM pubs.dbo.authors orDER BY au_lname, au_fname') AS a

GO
B. 使用有物件 OPENROWSET 和 OLE DB Provider for ODBC
以下范例使用 OLE DB Provider for ODBC 和 SQL Server ODBC 驱动程式来存取命名为 seattle1 远端伺服器上 pubs 资料库 authors 资料表以 ODBC 提供者使用 ODBC 语法指定的 provider_化提供者并使用 catalog.schema.object 语法来定义传回资料列集
格式:这连接方式是ODBC数据驱动
Select a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=ServerName;UID=LoginUser;PWD=Password,
[DatabaseName].dbo.TableName) AS a
orDER BY ColName1, ColName12

USE pubs
GO
Select a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
pubs.dbo.authors) AS a
orDER BY a.au_lname, a.au_fname
GO
C. 使用 Microsoft OLE DB Provider for Jet
以下范例藉由Microsoft OLE DB Provider for Jet 存取 Microsoft Access Northwind 资料库中 orders 资料表
1.附注 以下范例假设已经安装 Access
1、
USE pubs
GO
Select a.*
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\MSOffice\Access\Samplesorthwind.mdb';'admin';'mypwd', orders)
AS a
GO
2、
select * from openrow('Microsoft.Jet.OLEDB.4.0',
'E:\Study\Access\test.mdb';'admin';'','select * from student')

Select a.*
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'E:\Study\Access\test.mdb';'admin';'', student)
AS a
2.是以Excel为例必须安装了Excel
select *
from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=G:\WorkEveryDay\DayDo\OrderList',OrderList$)
DATABASE=G:\WorkEveryDay\DayDo\OrderList'是Excel表名及路径
,OrderList$是工作区名字MICROSOFT.JET.OLEDB.4.0是Excel驱动也可以用MICROSOFT.JET.OLEDB.5.0,MICROSOFT.JET.OLEDB.8.0,我测试所用window 2003及SQL Server 2000其中OrderList$所面$不能少要不能报错$是代表是工作区3.以VFP(DBF文件名)
select * from openrow('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\','select * from [temp.DBF]')
介绍说明:SourceType是数据源类型,SourceDB是数据源,后面是操作DBFSQL查询语句

D. 使用 OPENROWSET 和 INNER JOIN 中其他资料表
以下范例选取储存在相同电脑上 SQL Server Northwind 资料库 customers 资料表所有资料以及 Access Northwind 资料库 orders 资料表所有资料
附注 以下范例假设已经安装 Access
USE pubs
GO
Select c.*, o.*
FROM Northwind.dbo.Customers AS c INNER JOIN
OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\MSOffice\Access\Samplesorthwind.mdb';'admin';'mypwd', orders)
AS o
_disibledevent= 'ls_Source')
exec sp_dropserver 'ls_Source','droplogins'
go
exec sp_addlinkedserver
'ls_Source', 'ms','SQLOLEDB','TAODBSV001'
go
EXEC sp_addlinkedsrvlogin
'ls_Source','false','sa','read',''

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: