exec sp_addlinkedserver @server,@srvproduct,@provider,@datasrc,@location,@provstr,@catalog;
exec sp_addlinkedsrvlogin @rmtsrvname,@useself,@locallogin,@rmtuser,@rmtpassword;
exec sp_serveroption @server,@optname,@optvalue;
sp_helpserver
sp_linkedservers
sp_dropserver
例如:
exec sp_addlinkedserver 'ERP','Oracle','MSDAORA','AMT';
exec sp_addlinkedsrvlogin 'ERP','false',null,'crm','crm';
exec sp_serveroption 'ERP','rpc','true';
Oracle作为远程链接服务器时,SQL Server服务器上必须安装Oracle Client。配置SQL*Net名供OLE DB provider使用
sp_addlinkedserver
各种provider参考sp_addlinkedserver
SQL Server对OLE DB provider的支持情况可参考OLE DB providers Tested with SQL Server
sp_addlinkedsrvlogin
@rmtsrvname: 远程链接服务器名字
@useself: 是否使用当前登录SQL Server的认证信息登录链接服务器,SQL Server和远程链接服务器均使用Windows集成认证登录时可以使用
@locallogin: 建立本地SQL Server登录帐号与远程链接服务器登录帐号之间的对应关系,例如本地SQL Server sa帐号使用A1登录链接服务器,crm帐号使用A2登录链接服务器。@locallogin可以是域帐号。为null时本地SQL Server所有帐号均可使用该登录信息
@rmtuser,@rmtpassword: 登录远程链接服务器的帐号、密码
USE [DicomMetaData]
GO
/****** Object: StoredProcedure [dbo].[CreateLinkedServerForIRDD] Script Date: 02/05/2010 19:05:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CreateLinkedServerForIRDD]
(@IRDDServerName varchar(max),
@IRDDUserId varchar(max),
@IRDDPassword varchar(max))
AS
BEGIN
EXEC master.dbo.sp_addlinkedserver @server = N'IRDDSERVER', @srvproduct='', @provider=N'SQLNCLI', @datasrc=@IRDDServerName
EXEC master.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'IRDDSERVER',@useself=N'False',@locallogin=NULL,@rmtuser=@IRDDUserId,@rmtpassword=@IRDDPassword
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'IRDDSERVER', @optname=N'remote proc transaction promotion', @optvalue=N'true'
END
GO
/****** Object: LinkedServer [IRDDSERVER] Script Date: 02/05/2010 19:07:39 ******/
IF EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'IRDDSERVER')EXEC master.dbo.sp_dropserver@server=N'IRDDSERVER', @droplogins='droplogins'
GO
USE [msdb]
GO
--=========================================================================
--SQL JOB
--=========================================================================
/****** Object: Job [UpdateInstanceInfo] Script Date: 02/05/2010 19:08:02 ******/
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = N'UpdateInstanceInfo')
EXEC msdb.dbo.sp_delete_job @job_id=N'8d06b9f0-29df-446a-b4e3-5a0f0cbf1241', @delete_unused_schedule=1
GO
USE [msdb]
GO
/****** Object: Job [UpdateInstanceInfo] Script Date: 02/05/2010 19:08:02 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 02/05/2010 19:08:02 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'UpdateInstanceInfo',
@enabled=1,
@notify_level_eventlog=2,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'No description available.',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'az-sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [UpdateInstanceInfo] Script Date: 02/05/2010 19:08:02 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'UpdateInstanceInfo',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'DECLARE @return_value int
EXEC @return_value = [dbo].[UpdateInstaceInfo]
SELECT ''Return Value'' = @return_value
GO',
@database_name=N'DicomMetaData',
@flags=4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'UpdateEveryTenSeconds',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=2,
@freq_subday_interval=10,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20090101,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959,
@schedule_uid=N'460e0bb5-953c-42d8-913b-ac998d5f9775'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO