日期:2014-05-17  浏览次数:20331 次

关于存储过程的 急
USE [CSM]
GO
/****** Object:  StoredProcedure [dbo].[proc_addJobsToRemoteSQLServer1]    Script Date: 08/24/2013 11:31:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <William>
-- Create date: <04/22/2013>
-- Description: <将本地的采集任务,更新到服务器数据库中>
-- =============================================
ALTER PROCEDURE [dbo].[proc_addJobsToRemoteSQLServer1]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @server_id INT;
DECLARE @ati_id INT;
DECLARE @c_id BIGINT;
DECLARE @ServerIP varchar;
    DECLARE @SQL varchar;
-- @returnValue
-- 0:没有限制的服务器
-- @ati_id:推送成功,返回当前推送的任务id
-- -1:异常
-- -2:任务队列中没有等待的采集任务
DECLARE @returnValue INT;

-- Insert statements for procedure here
--EXEC sp_configure 'show advanced options',1
--RECONFIGURE;
--EXEC sp_configure 'Ad Hoc Distributed Queries',1
--RECONFIGURE

-- 查看当前是否有闲置服务器
--BEGIN TRY
SET @server_id=cpr_test.dbo.fun_getGatherWebserviceID2()

-- 没有闲置服务器
IF @server_id=0
BEGIN
SET @returnValue=0;
RETURN @returnValue;
END

-- 1.取第一个状态为0,且类型属于采集的任务,将其ID赋值给@ati_id --
SET @ati_id=(SELECT TOP 1 ati_id FROM cpr_test.dbo.AutorunTaskInfo WITH(NOLOCK) 
WHERE ati_status=0 and ati_attid in (2,3,17,21) ORDER BY ati_level desc, ati_createdate)

--IF @ati_id IS NULL OR @ati_id=''
IF cast(@ati_id as varchar) IS NULL OR cast(@ati_id as varchar)=''
BEGIN
SET @returnValue=-2;
RETURN @returnValue;
END
-- 任务队列中,有未被激活的采集任务
IF @ati_id>0
BEGIN

if @server_id=1 set @ServerIP='50.63.**.***'
    if @server_id=2 set @ServerIP='76.12.**.***'
    if @server_id=3 set @ServerIP='50.63.**.***'
    if @server_id=4 set @ServerIP='50.63.**.***'
    IF @server_id=5 set @ServerIP='50.63.**.***'
    if @server_id=6 set @ServerIP='50.63.**.***'
-- @server_id1:50.63.60.210

-- 2.将ASIN更新到dbo.AMA_TASKCONDITIONS表中 --
-- 将新插入到dbo.AMA_TASKCONDITIONS表中的数据ID赋值给@c_id
SET @SQL ='INSERT INTO OPENDATASOURCE(''sqloledb'',''server='+@ServerIP+'1;uid=sa;pwd=db!@#$1234;database=Amazon_GInfoDB'').Amazon_GInfoDB.dbo.AMZ_TASKCONDITIONS (c_other, c_relateid)