动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ SQL技巧 ]的信息

本月文章推荐
.SQL中查询数据表字段名称的查询语.
.MSSQL跨服务器连接的几种方法.
.MDF文件在SQL Server数据库中恢复.
.锁现象通常分为死锁和锁等待两种.
.SQL Server2000数据库文件损坏时.
.分页存储过程.
.利用sql2005的新特性实现根据子表.
.在Linux下访问MS SQL Server数据.
.SQL Server 数据导入:行为规范.
.SELECT查询的应用(二).
.配置SQL Server 2000选项.
.MS-SQL中多个表或结果集的组合的.
.比较一下看看自己掌握了多少SQL快.
.在SQL Server 2005中用存储过程实.
.SQL Server数据库简体繁体数据混.
.SQL 视图效率和连接超时设置.
.解决sqlsever日志备份错误的方法 .
.详细介绍查询优化技术在现实系统.
.借助两个开发包在PL/SQL中实现多.
.深入讲解数据挖掘中的“数据归约.

MSSQL跨服务器连接的几种方法

发表日期:2007-3-31 |


下面对  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_string' }
    , { [ 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_string'
是以 DBPROP_INIT_PROVIDERSTRING 属性传送以初始化 OLE DB Provider 的特定提供者连线字串。provider_string 一般会包含所有初始化提供者时需要的所有连线资讯。
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 格式之三个部份的名称。
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_string 来初始化提供者,并使用 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 openrowset('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 openrowset('MSDASQL','Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=D:\','select * from [temp.DBF]')
说明:SourceType是数据源类型,SourceDB是数据源,后面是操作DBF的SQL查询语句。
 
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
   ON c.CustomerID = o.CustomerID
GO
E.将存储过程的记录集插入到虚拟表中(执行的存储不策有全局虚拟表)
如:
Select * into #t
FROM OPENQUERY([192.168.42.43], 'exec [Order].dbo.Or_Select_BackListDetail ''BK0607190001''')
如下:就会报错,必须先建表create table #t,而且此虚拟表的参数一定要与存储过程的参数一样。
Insert into #t
exec [Order].dbo.Or_Select_BackListDetail 'BK0607190001'
F:将打开的相应的文件(dbf,exec等等),从SQL里插入数据进行
insert into   
--select * from
openrowset('MSDASQL', 'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=d:\',
'select * from temp.DBF')
select top 100 orderno,shipto from ordermaster
注:
 1、两数字段结构一样(长度、类型)  
 2、保证导出表没有为null或空的字段  
 3、将你上面的语句改为下面的select   *   from   tmp.DBF,就是不要那个[]

3  建立链接服务器 

if   exists   (select   1   from   master..sysservers   where   srvname   =   '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',''

上一篇:SQL Server 性能调优 人气:3547
下一篇:存储过程与SQL语句的恩怨情仇 人气:4036
浏览全部MSSQL跨服务器连接的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-21 Nucleus v3.33 多国语言版
2008-8-21 HDWiki v4.0 bulid 080821 UTF-8
2008-8-21 明科在线客服系统 v6.0
2008-8-21 KesionCMS v5.0.2 正式版 utf-8
2008-8-21 KesionEshop v5.0.2 正式版 utf-8
2008-8-21 HDWiki v4.0 bulid 080821 GBK
2008-8-21 新文互动酷站展示系统 v1.5
2008-8-21 Punbb v1.2.20 多国语言版
2008-8-21 QQ头像网 beta
2008-8-16 iLaba Player(小喇叭播放器) v2.
2008-8-16 DoubleClickFix 鼠标双击修正工具
2008-8-16 CrystalCPUID 4.15.2.451
2008-8-16 VeryCD 电驴(easyMule) 1.0.4 Bu
2008-8-16 uTorrent 1.8 Build 11813 - Sta
2008-8-16 比特精灵(BitSpirit) v3.3.2.287
2008-8-16 StayInTune音叉 v1.0 破解版
2008-8-16 iChing《周易》汉化补丁 v1.0
2008-8-16 Starmap星空图v1.0汉化破解版
  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵