我做了个SSIS包,目的是将Oracle中的数据导入到SQL Server 2005中,可是老板要我实现每天早上自动运行这个包,实现数据定时自动导入,我在网上查了好多资料,听说可以创建Job实现,但是我不知道怎样创建,请高手指点,最好写出详细的步骤.谢谢!

解决方案 »

  1.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_JobSet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[p_JobSet]
    GO/*--指定时间调用存储过程 创建一个在指定时间,调用指定存储过程的作业
    作业执行完成后会自动删除--邹建 2004.07(引用请保留此信息)--*//*--调用示例 declare @dt datetime
    set @dt=dateadd(minute,1,getdate()) --当前时间1分钟后执行
    exec p_JobSet 'master.dbo.xp_cmdshell ''dir c:\*.*''',@dt
    --*/
    create proc p_JobSet
    @prorcname sysname, --要调用定时调用的存储过程名,如果不在当前库中,则用:库名.所有者名.存储过程名
    @job_date datetime --存储过程的执行时间(包括时间信息)
    with encryption
    as
    declare @dbname sysname,@jobname sysname
    ,@date int,@time intselect @jobname='临时作业_'+cast(newid() as varchar(36))
    ,@date=convert(varchar,@job_date,112)
    ,@time=replace(convert(varchar,@job_date,108),':','')if exists(select 1 from msdb..sysjobs where name=@jobname)
    exec msdb..sp_delete_job @job_name=@jobname --创建作业
    exec msdb..sp_add_job @job_name=@jobname,@delete_level=1--创建作业步骤
    declare @sql varchar(800)
    select @sql='exec '+@prorcname
    ,@dbname=db_name()exec msdb..sp_add_jobstep @job_name=@jobname,
    @step_name = '处理步骤',
    @subsystem = 'TSQL',
    @database_name=@dbname,
    @command = @sql,
    @retry_attempts = 5,  --重试次数
    @retry_interval = 5   --重试间隔--创建调度
    EXEC msdb..sp_add_jobschedule @job_name = @jobname, 
    @name = '时间安排',
    @enabled = 1, 
    @freq_type = 1, 
    @active_start_date = @date,
    @active_start_time = @time-- 添加目标服务器
    EXEC msdb.dbo.sp_add_jobserver 
    @job_name = @jobname ,
    @server_name = N'(local)' 
    go
      

  2.   

    我要运行的是SSIS包啊,我以前没有接触过这些东西,还望更详细点.
      

  3.   

    寫個winform程序,用系統排程,每天早上定時運行
    我現在就這么做的。。
      

  4.   

    cyz9977能将你的winform程序给我发给看哈吗,我愿意将我的积分都给你,
      

  5.   

    不好意思,公司郵件不能外發
    using System;
    using System.Collections.Generic;
    using System.Text;using System.Configuration;
    using System.IO;
    using Microsoft.SqlServer.Dts.Runtime;namespace DGS_Job
    {
        class SSISImport
        {
            fn_share fn_share = new fn_share();        string msg = "";//錯誤訊息
            public string Msg
            {
                get
                {
                    return msg;
                }
                set
                {
                    msg = value;
                }
            }        public bool TXT_SSIS(string ssisfile,string txtpath,string name)
            {
                msg = "";            string pkg = ssisfile;// @"E:\project\DropShipment\Code\TXTImport\TXTImport\Package.dtsx";            Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
                Package p = app.LoadPackage(pkg, null);            //给包变量赋值
                if (p.Variables.Contains("TXTPath"))
                {
                    p.Variables["TXTPath"].Value = txtpath;
                }
                if (p.Variables.Contains("UpdateName"))
                {
                    p.Variables["UpdateName"].Value = name;
                }            DTSExecResult result = p.Execute();
                //获取包的执行信息
                if (result.Equals(DTSExecResult.Failure))
                {
                    for (int ii = 0; ii < p.Errors.Count; ii++)
                    {
                        fn_share.systemLog(p.Errors[ii].Description + "\r\n");                    msg += p.Errors[ii].Description + "\r\n";
                    }
                }            if (result.Equals(DTSExecResult.Success))
                {
                    return true;
                }
                else
                {
                    return false;
                }        }
        }
    }
      

  6.   

    看看我的计划任务:color 2a
    cls
    @ ECHO.                    关  于
    @ ECHO -----------------------------------------------------
    @ ECHO  
    @ ECHO                  数据传输程序            
    @ ECHO -----------------------------------------------------
    echo *******************************************************************************
    echo *                                                    *
    echo *              正在传输程序......请勿关闭!          *
    echo *                                                    *
    echo *******************************************************************************
    del log\*.txt
    dtexec /f "g:\dts\Itmast.dtsx" >log\itmast-_%date:~0,10%.txt
    dtexec /f "g:\dts\Itmdtl.dtsx" >log\itmdtl__%date:~0,10%.txt
    dtexec /f "g:\dts\itmean.dtsx" >log\itmean__%date:~0,10%.txt
    dtexec /f "g:\dts\Jouinv.dtsx" >log\jouinv__%date:~0,10%.txt
    dtexec /f "g:\dts\Joupct.dtsx" >log\joupct__%date:~0,10%.txt
    dtexec /f "g:\dts\Jouphy.dtsx" >log\jouphy__%date:~0,10%.txt
    dtexec /f "g:\dts\Joupxd.dtsx" >log\joupxd__%date:~0,10%.txt
    dtexec /f "g:\dts\基础类.dtsx" >log\jcl__%date:~0,10%.txt
    dtexec /f "g:\dts\audit_trx.dtsx" >log\audit_trx__%date:~0,10%.txt
    dtexec /f "g:\dts\dayendh.dtsx" >log\dayendh__%date:~0,10%.txt
    dtexec /f "g:\dts\paytab.dtsx" >log\paytab__%date:~0,10%.txt
    dtexec /f "g:\dts\Joupay.dtsx" >log\joupay__%date:~0,10%.txt
    dtexec /f "g:\dts\tfxrec.dtsx" >log\tfxrec.dtsx__%date:~0,10%.txt
    echo good bye
      

  7.   

    看看dtexec这个命令的帮助.....直接在dos下就可以执行的,用不着写WINFORM
      

  8.   

    cyz9977你给我的代码中没有设置定时执行SSIS包啊
      

  9.   

    对job不了解,可以试一下Window schedule
      

  10.   


    代碼中不設置時間
    用系統的排程定時執行你生成的exe文件
    做的完善一點要在代碼中記錄log 返回錯誤信息 以及錯誤的處理等等。
      

  11.   

    定时作业的制定企业管理器 
    --管理 
    --SQL Server代理 
    --右键作业 
    --新建作业 
    --"常规"项中输入作业名称 
    --"步骤"项 
    --新建 
    --"步骤名"中输入步骤名 
    --"类型"中选择"Transact-SQL 脚本(TSQL)" 
    --"数据库"选择执行命令的数据库 
    --"命令"中输入要执行的语句: 
                           EXEC 存储过程名 ... --该存储过程用于创建表 --确定 
    --"调度"项 
    --新建调度 
    --"名称"中输入调度名称 
    --"调度类型"中选择你的作业执行安排 
    --如果选择"反复出现" 
    --点"更改"来设置你的时间安排  
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 
      

  12.   

    我知道一个很简单的方法
    不过你可能要修改你的SSIS package的Security ProtectionLevel EncryptSensitiveWithPassword
    设置密码 然后 用exec xp_cmdshell 'dtexec /f “filepath” /De yourPassword'
    把这个命令布置job即可,不过要能够运行dtexec命令要先
    运行下面的命令
    -- To allow advanced options to be changed.
    EXEC sp_configure 'show advanced options', 1
    GO
    -- To update the currently configured value for advanced options.
    RECONFIGURE
    GO
    -- To enable the feature.
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    -- To update the currently configured value for this feature.
    RECONFIGURE
    GO不设密码就 exec xp_cmdshell 'dtexec /f “filepath”'应该是可以但我没试成功,你可以自己试试