我的环境是:Windows xp+Sql Server 2005
安装oracle client 9i后要重启才能在Sql Server 2005中使用如下语句连接到远程oracle数据库:
USE [master]
GO
EXEC --添加服務
master.dbo.sp_addlinkedserver --命令名稱
@server = N'TEST',     --參數1,連接oracle的數據源名稱
@srvproduct=N'ORACLE',    --參數2,連接的數據源的產品名稱
@provider=N'MSDAORA',    --參數3,訪問的接口方式
@datasrc=N'ERPORA'     --參數4,被訪問的數據源名稱
GO
EXEC --添加用戶
master.dbo.sp_addlinkedsrvlogin --命令名稱
@rmtsrvname = N'TEST',    --數據源名稱
@locallogin = NULL ,    --本地登錄
@useself = N'False',    --指定用戶名和密碼登錄
@rmtuser = N'SCOTT',     --用戶名稱
@rmtpassword = N'a123456'    --用戶密碼
go因为我要在Sql Server 2005里写一个SP用job来执行,定期向远程oracle写数据,目前测试的方法是安装了oracle client 9i,
如果到正式使用此机制时,考虑到正式机上的资料很重要,不能重启,
请问有没有什么方法可以不用重启主机就可以执行上面的语句呢?

解决方案 »

  1.   

    try//user sql link (sql insert\update\delete...)
    select * from openquery(svr_iqcjl,'select * from mdr')
    /****** Object:  LinkedServer [svr_iqcjl]    Script Date: 02/05/2009 20:58:35 ******/
    EXEC master.dbo.sp_addlinkedserver @server = N'svr_iqcjl', @provider=N'SQLOLEDB', @datasrc=N'172.20.100.12'
     /* For security reasons the linked server remote logins password is changed with ######## */
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'svr_iqcjl',@useself=N'False',@locallogin=NULL,@rmtuser=N'IQC',@rmtpassword='########'GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'collation compatible', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'data access', @optvalue=N'true'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'dist', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'pub', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'rpc', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'rpc out', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'sub', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'connect timeout', @optvalue=N'0'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'collation name', @optvalue=null
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'lazy schema validation', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'query timeout', @optvalue=N'0'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'use remote collation', @optvalue=N'true'
    GO
      

  2.   

    try//user sql link (sql insert\update\delete...)
    select * from openquery(svr_iqcjl,'select * from mdr')
    /****** Object:  LinkedServer [svr_iqcjl]    Script Date: 02/05/2009 20:58:35 ******/
    EXEC master.dbo.sp_addlinkedserver @server = N'svr_iqcjl', @provider=N'SQLOLEDB', @datasrc=N'172.20.100.12'
     /* For security reasons the linked server remote logins password is changed with ######## */
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'svr_iqcjl',@useself=N'False',@locallogin=NULL,@rmtuser=N'IQC',@rmtpassword='########'GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'collation compatible', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'data access', @optvalue=N'true'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'dist', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'pub', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'rpc', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'rpc out', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'sub', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'connect timeout', @optvalue=N'0'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'collation name', @optvalue=null
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'lazy schema validation', @optvalue=N'false'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'query timeout', @optvalue=N'0'
    GOEXEC master.dbo.sp_serveroption @server=N'svr_iqcjl', @optname=N'use remote collation', @optvalue=N'true'
    GO