创建作业

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 托管实例

重要

Azure SQL 托管实例目前支持大多数(但不是所有)SQL Server 代理功能。 有关详细信息,请参阅 Azure SQL 托管实例与 SQL Server 的 T-SQL 区别

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

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

开始之前

限制和局限

  • 若要创建作业,用户必须是某个 SQL Server 代理固定数据库角色或 sysadmin 固定服务器角色的成员。 作业只能由其所有者或 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)来调用 Job 类的 Create 方法。 有关示例代码,请参阅 在 SQL Server 代理中计划自动管理任务