SQL Server - [分布式查询/事务]

分布式查询
    OPENROWSET
    从Excel取数据
    SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=d:/1.xls',[Sheet1$])
    从Oracle取数据
    SELECT * FROM OPENROWSET( 'MSDAORA.1', 'NetServiceName';'User';'Password', 'SELECT * FROM OracleTalbe')
 
    Linked Server(for Oracle)
    建立Linked Server
    sp_addlinkedserver 'Allies', 'Oracle', 'MSDAORA.1', 'NetServiceName'
    Oracle的Login
    sp_addlinkedsrvlogin 'Allies', FALSE, 'SQLServerLogin', 'OracleUser', 'OraclePassword'
    从Oracle查询数据
    SELECT*FROM OPENQUERY( Allies, 'SELECT * FROM OracleTalbe'),或者
    SELECT*FROM Allies..OracleUser.OracleTalbe
    修改Linked Server的Server Option
     sp_serveroption'Allies', 'Option Name', 'Option Value'
     例如
    sp_serveroption 'OraDC', 'rpc out', 'true'
    sp_serveroption 'OraDC', 'rpc', 'true'
    向Oracle插入数据(还没有用过)
    INSERT INTO OPENQUERY(Allies, 'SELECT ... FROM OracleTalbe WHERE 1=2') VALUES ( ... )
    删除Linked Server
    sp_dropserver 'Allies', 'droplogins'
 
    注意:使用OPENROWSET、OPENQUERY时,SQL Server不对提交的SQL语句做任何检查,直接将语句提交给Linked Server进行处理;使用四部分命名法时,SQL Server可能从Linked Server上读取被引用表的数据到SQL Server,然后在SQL Server上来完成其它操作。
 
    设置SQL Server到Oracle的Linked Server,可参考以下KB文章:
 
    分布式事务中的OPENROWSET、OPENQUERY、OPENDATASOURCE
    如果在事务,或是一些隐含使用事务的情况下,例如TRIGGER中,使用OPENROWSET、OPENQUERY、OPENDATASOURCE时,就需要使用分布式事务来处理。
    在分布式事务中使用OPENROWSET、OPENQUERY、OPENDATASOURCE或Linked Server时,需要注意:
    1. 必须启动MSDTC服务。
    Service Name为Distributed Transaction Coodinator。
    2. 所涉及的Server之间如果存在网关、防火墙,需要开启TCP 135端口。
    分布式事务需要使用这个端口通讯。
    3. 如果Server之间跨网段,则Server之间需要能互相PING到机器名(而不是IP地址)。
    如果相互PING机器名有问题,修改system32/driver/etc目录下的hosts文件。
 
    上面的设置不正确时,会出现类似如下的错误:
    该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
 
 
    分布式事务可以查询下列KB文章:
 
    使用分布式查询,可以参考:Chapter 25 - Distributed Queries: OLE DB Connectivity
    关于ORAOLEDB提供程序的详细说明,可以参考: Oracle Provider for OLE DB Developer's Guide - Release 9.2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值