创建作业

本主题介绍如何使用 SQL Server Management Studio、Transact-SQL 或 SQL Server 管理对象(SMO)在 SQL Server 2014 中创建 SQL Server 代理作业。

若要添加可发送给作员的作业步骤、计划、警报和通知,请参阅“另请参阅”部分中的主题链接。

在您开始之前

局限性与限制

  • 若要创建作业,用户必须是 SQL Server 代理固定数据库角色之一的成员,或者是 sysadmin 固定服务器角色的成员。 作业只能由作业的所有者或 系统管理员 角色的成员编辑。 有关 SQL Server 代理固定数据库角色的详细信息,请参阅 SQL Server 代理固定数据库角色

  • 将作业分配给另一个登录名不能保证新所有者有足够的权限才能成功运行作业。

  • 本地作业由本地 SQL Server 代理缓存。 因此,任何修改都隐式强制 SQL Server 代理重新缓存作业。 由于 SQL Server 代理在调用 sp_add_jobserver 之前不会缓存作业,因此调用 sp_add_jobserver 更高效。

安全

  • 必须是系统管理员才能更改作业的所有者。

  • 出于安全原因,只有作业所有者或 sysadmin 角色的成员才能更改作业的定义。 只有 sysadmin 固定服务器角色的成员才能将作业所有权分配给其他用户,并且无论作业所有者如何,他们都可以运行任何作业。

    注释

    如果将作业所有权更改为不是 sysadmin 固定服务器角色的成员的用户,并且该作业正在执行需要代理帐户(例如 SSIS 包执行)的作业步骤,请确保用户有权访问该代理帐户,否则该作业将失败。

权限

有关详细信息,请参阅 实现 SQL Server 代理安全性

使用 SQL Server Management Studio

创建 SQL Server 代理作业

  1. 对象资源管理器中,单击加号以展开要在其中创建 SQL Server 代理作业的服务器。

  2. 单击加号以展开 SQL Server 代理

  3. 右键单击 作业 文件夹,然后选择 “新建作业...”

  4. 在“新建作业”对话框中,在 “常规” 页上,修改作业的常规属性。 有关此页上可用选项的详细信息,请参阅 “作业属性”和“新建作业”(常规页)

  5. 步骤 页上,组织作业步骤。 有关此页上可用选项的详细信息,请参阅 “作业属性:新建作业”(步骤页)

  6. 计划 页上,组织作业的计划。 有关此页上可用选项的详细信息,请参阅 “作业属性:新建作业”(计划页)

  7. 警报 页上,整理作业的警报。 有关此页上可用选项的详细信息,请参阅 “作业属性:新建作业”(“警报”页)

  8. 通知 页上,为 Microsoft SQL Server 代理设置操作,以便在作业完成时执行。 有关此页上可用选项的详细信息,请参阅“作业属性:新建作业”(通知页)。

  9. 目标 页面上,管理作业的目标服务器。 有关此页上可用选项的详细信息,请参阅“作业属性:新建作业”(目标页)。

  10. 完成后,单击 “确定”

使用 Transact-SQL

创建 SQL Server 代理作业

  1. “对象资源管理器” 中,连接到某个数据库引擎实例。

  2. 在标准栏上,单击“新建查询”

  3. 将以下示例复制并粘贴到查询窗口中,然后单击 执行

    USE msdb ;  
    GO  
    EXEC dbo.sp_add_job  
        @job_name = N'Weekly Sales Data Backup' ;  
    GO  
    EXEC sp_add_jobstep  
        @job_name = N'Weekly Sales Data Backup',  
        @step_name = N'Set database to read only',  
        @subsystem = N'TSQL',  
        @command = N'ALTER DATABASE SALES SET READ_ONLY',   
        @retry_attempts = 5,  
        @retry_interval = 5 ;  
    GO  
    EXEC dbo.sp_add_schedule  
        @schedule_name = N'RunOnce',  
        @freq_type = 1,  
        @active_start_time = 233000 ;  
    USE msdb ;  
    GO  
    EXEC sp_attach_schedule  
       @job_name = N'Weekly Sales Data Backup',  
       @schedule_name = N'RunOnce';  
    GO  
    EXEC dbo.sp_add_jobserver  
        @job_name = N'Weekly Sales Data Backup';  
    GO  
    

有关详细信息,请参见:

使用 SQL Server 管理对象

创建 SQL Server 代理作业

使用您选择的编程语言(如 Visual Basic、Visual C# 或 PowerShell)调用Create类的Job方法。 有关示例代码,请参阅 在 SQL Server 代理中计划自动管理任务。