代码之家  ›  专栏  ›  技术社区  ›  MetaColon

SQL Server自动启动例程[重复]

  •  0
  • MetaColon  · 技术社区  · 6 年前

    我需要知道如何使用SQL Server代理作业使SQL查询每天运行,并且需要最少的配置设置。

    0 回复  |  直到 6 年前
        1
  •  152
  •   Avada Kedavra    12 年前
    1. 展开“SQL Server代理”节点,右键单击“SQL Server代理”中的“作业”节点,然后选择 'New Job'

    2. 窗口输入作业的名称和 'General' 标签。

    3. 选择 'Steps' 'New' 在底部。

    4. '台阶' 窗口输入步骤名称并选择要运行查询的数据库。

    5. 'OK' .

    6. 点击 'Schedule'

    7. 点击 '好'

    (当然还有其他的选择,但我想说的是,这是建立和安排工作所需要的最低限度)

        2
  •  84
  •   S.Mason    7 年前
        3
  •  15
  •   Doug Lampe    7 年前

    要在t-sql中执行此操作,可以使用以下系统存储过程来安排每日作业。这个例子每天安排在凌晨1:00。有关各个存储过程的语法和有效参数范围的详细信息,请参阅Microsoft帮助。

    DECLARE @job_name NVARCHAR(128), @description NVARCHAR(512), @owner_login_name NVARCHAR(128), @database_name NVARCHAR(128);
    
    SET @job_name = N'Some Title';
    SET @description = N'Periodically do something';
    SET @owner_login_name = N'login';
    SET @database_name = N'Database_Name';
    
    -- Delete job if it already exists:
    IF EXISTS(SELECT job_id FROM msdb.dbo.sysjobs WHERE (name = @job_name))
    BEGIN
        EXEC msdb.dbo.sp_delete_job
            @job_name = @job_name;
    END
    
    -- Create the job:
    EXEC  msdb.dbo.sp_add_job
        @job_name=@job_name, 
        @enabled=1, 
        @notify_level_eventlog=0, 
        @notify_level_email=2, 
        @notify_level_netsend=2, 
        @notify_level_page=2, 
        @delete_level=0, 
        @description=@description, 
        @category_name=N'[Uncategorized (Local)]', 
        @owner_login_name=@owner_login_name;
    
    -- Add server:
    EXEC msdb.dbo.sp_add_jobserver @job_name=@job_name;
    
    -- Add step to execute SQL:
    EXEC msdb.dbo.sp_add_jobstep
        @job_name=@job_name,
        @step_name=N'Execute SQL', 
        @step_id=1, 
        @cmdexec_success_code=0, 
        @on_success_action=1, 
        @on_fail_action=2, 
        @retry_attempts=0, 
        @retry_interval=0, 
        @os_run_priority=0, 
        @subsystem=N'TSQL', 
        @command=N'EXEC my_stored_procedure; -- OR ANY SQL STATEMENT', 
        @database_name=@database_name, 
        @flags=0;
    
    -- Update job to set start step:
    EXEC msdb.dbo.sp_update_job
        @job_name=@job_name, 
        @enabled=1, 
        @start_step_id=1, 
        @notify_level_eventlog=0, 
        @notify_level_email=2, 
        @notify_level_netsend=2, 
        @notify_level_page=2, 
        @delete_level=0, 
        @description=@description, 
        @category_name=N'[Uncategorized (Local)]', 
        @owner_login_name=@owner_login_name, 
        @notify_email_operator_name=N'', 
        @notify_netsend_operator_name=N'', 
        @notify_page_operator_name=N'';
    
    -- Schedule job:
    EXEC msdb.dbo.sp_add_jobschedule
        @job_name=@job_name,
        @name=N'Daily',
        @enabled=1,
        @freq_type=4,
        @freq_interval=1, 
        @freq_subday_type=1, 
        @freq_subday_interval=0, 
        @freq_relative_interval=0, 
        @freq_recurrence_factor=1, 
        @active_start_date=20170101, --YYYYMMDD
        @active_end_date=99991231, --YYYYMMDD (this represents no end date)
        @active_start_time=010000, --HHMMSS
        @active_end_time=235959; --HHMMSS
    
        4
  •  8
  •   efysis    6 年前

    我的工作是执行存储过程。你可以很容易地改变 @command 运行sql。

    EXEC msdb.dbo.sp_add_job  
       @job_name = N'MakeDailyJob',   
       @enabled = 1,   
       @description = N'Procedure execution every day' ; 
    
     EXEC msdb.dbo.sp_add_jobstep  
        @job_name = N'MakeDailyJob',   
        @step_name = N'Run Procedure',   
        @subsystem = N'TSQL',   
        @command = 'exec BackupFromConfig';
    
     EXEC msdb.dbo.sp_add_schedule  
        @schedule_name = N'Everyday schedule',   
        @freq_type = 4,  -- daily start
        @freq_interval = 1,
        @active_start_time = '230000' ;   -- start time 23:00:00
    
     EXEC msdb.dbo.sp_attach_schedule  
       @job_name = N'MakeDailyJob',  
       @schedule_name = N'Everyday schedule' ;
    
     EXEC msdb.dbo.sp_add_jobserver  
       @job_name = N'MakeDailyJob',  
       @server_name = @@servername ;
    
        5
  •  -1
  •   David Ferenczy Rogožan Hugo L.M    9 年前

    下面是一个示例代码:

    Exec sp_add_schedule
        @schedule_name = N'SchedulName' 
        @freq_type = 1
        @active_start_time = 08300
    
        6
  •  -2
  •   User Learning    9 年前

    如果需要每日备份//C:\ Users\admin\Desktop\DBScript\DBBackUpSQL.sql中的以下sql脚本存储

    DECLARE @pathName NVARCHAR(512),
     @databaseName NVARCHAR(512) SET @databaseName = 'Databasename' SET @pathName = 'C:\DBBackup\DBData\DBBackUp' + Convert(varchar(8), GETDATE(), 112) + '_' + Replace((Convert(varchar(8), GETDATE(), 108)),':','-')+ '.bak' BACKUP DATABASE @databaseName TO DISK = @pathName WITH NOFORMAT, 
    INIT, 
    NAME = N'', 
    SKIP, 
    NOREWIND, 
    NOUNLOAD, 
    STATS = 10 
    GO
    

    打开任务计划程序

    Triggers 选项卡选择 New .

    按钮选择每日单选按钮

    点击 Ok 按钮

    然后点击 Action 选项卡选择新建。

    "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S管理-PC-i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

    --上面的路径可以是100写90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i

    然后单击“确定”按钮

    脚本将按您在触发器选项卡上每天选择的时间执行