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
相关文档:
'在引用里添加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=服务器名"
  ......
SQL Server2005读取注册表
DECLARE @result varchar(255)
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\OperationControlSystem\ClientID','Prefix',@result OUT ---注意必须有OUT否则@result为空
SELECT @result
假如在执行过程中出现错误,可能是未找到存储过程_master.dbo.xp_regread
原因:做安全 ......
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_convert]') and xtype in (N'FN', N'IF', N'TF'))&n ......