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文章:
How to set up and troubleshoot a linked server to Oracle in SQL Server
Limitations of Microsoft Oracle ODBC Driver and OLEDB Provider
Techniques to Debug Connectivity Issues to an Oracle Server Using the ODBC Driver
相关文档:
DECLARE @HDOC INT --文档句柄
DECLARE @XMLSTRING VARCHAR(200) --XML字符串
SET @xmlString ='<?xml version="1.0"?>
<ROOT>
<USER ID="1" Name="SBQCEL"/>
<USER ID="2" Name="PEACELI"/>
<USER ID="3" Name="SHEEPCHANG"/>
</ROOT>'
--使用系统存储 ......
declare @XML XML
SET @XML='<root>
<OLDVALUE>
<H_Action id="1130">030</H_Action>
<D_Action>030</D_Action>
<OrderCompany>00220</OrderCompany>
<OrderNumber>10004035</OrderNumber> ......
'在引用里添加ADODB
Public vscn As ADODB.Connection
Public SQLString As String
SQLString = "Provider=SQLOLEDB.1;Password=密码;Persist Security Info=True;User ID=用" & _
"户;Initial Catalog=数据库名;Data Source=服务器名"
  ......
Dim rs As ADODB.Recordset
Dim sqlstr As String
'查询
sqlstr = "select * from 表名 where 字段名 = '" & 查询的内容 & "'"
rs = VScn.Execute("" & SqlSt ......
1. 安装oracle 10G客户端
要访问oracle数据库必须安装oracle客户端。安装oracle客户端有两种方式,即完整安装和立即安装,这两种方式都可以。安装完后配置要链接数据库服务器。
$ORACLE_HOME\network\admin\tnsname.ora
在此配置文件里添加如下内容:
sunora =
(DESCRIPTION =
......