【问题标题】:How to create jobs in SQL Server Express edition如何在 SQL Server Express 版本中创建作业
【发布时间】:2011-11-04 06:56:59
【问题描述】:

谁能给我解释一下如何在SQL Server Express版中创造就业机会?

【问题讨论】:

  • 如果您指的是 SQL 代理作业,该功能在 Express 版本中不可用。有关其他可能性,请参阅此问题的答案:stackoverflow.com/questions/3788583/…
  • Express 版支持 SQL Server Broker,您可以创建自定义机制,如here

标签: sql-server sql-server-2008-express sql-job


【解决方案1】:

创建 SQL 代理作业的功能在 SQL Server Express Edition 中不可用。另一种方法是使用 Windows 任务计划程序执行一个执行 SQL 脚本的批处理文件。

为此,首先创建一个名为 sqljob.bat

的批处理文件
sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

用你的替换 servernameusernamepasswordpath

然后创建名为 sqljob.sql

的 SQL 脚本文件
USE [databasename]
--T-SQL commands go here
GO

[databasename] 替换为您的数据库名称。编写 SQL 脚本时,USEGO 是必需的。

sqlcmd 是一个用于执行 SQL 脚本的命令行实用程序。创建这两个文件后,使用 Windows 任务计划程序执行批处理文件。

注意:之前针对这个问题发布了几乎相同的答案。但我觉得它不完整,因为它没有使用sqlcmd 指定登录信息。

【讨论】:

  • 我将把那个 sqljob.sql 保存在哪里?我怎么能把它什么时候执行?
  • @WTFZane,没关系,只要执行批处理文件的人都可以使用该位置。 (在上面的脚本中,将path of sqljob.sql 替换为您使用的任何位置)。请记住,这里的*.sql 文件只不过是一个文本文件。
【解决方案2】:

SQL Server Express doesn't include SQL Server Agent,因此不能只创建 SQL 代理作业。

你可以做的是:
您可以通过创建批处理文件和 SQL 脚本文件并通过 Windows 任务计划程序运行它们来“手动”创建作业。
例如,您可以使用以下两个文件备份数据库:

backup.bat:

sqlcmd -i backup.sql

backup.sql:

backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

只需将两个文件放在同一个文件夹中,然后通过 Windows 任务计划程序执行批处理文件。

第一个文件只是一个 Windows 批处理文件,它调用 sqlcmd utility 并传递一个 SQL 脚本文件。
SQL 脚本文件包含 T-SQL。在我的示例中,备份数据库只需一行,但您可以将任何 T-SQL 放入其中。例如,您可以改为执行一些 UPDATE 查询。


如果您要创建的作业用于备份、索引维护或完整性检查,您还可以使用 Ola Hallengren 的出色 Maintenance Solution

它由一堆存储过程(以及用于非 Express 版本的 SQL Server 的 SQL 代理作业)组成,在 FAQ 中有一个关于如何在 SQL Server Express 上运行作业的部分:

如何开始使用 SQL Server Express 上的 SQL Server 维护解决方案?

SQL Server Express 没有 SQL Server 代理。因此,必须使用 cmd 文件和 Windows 计划任务来计划存储过程的执行。请按照以下步骤操作。

SQL Server Express 没有 SQL Server 代理。因此,执行 必须使用 cmd 文件和 Windows 计划任务。请按照以下步骤操作。

  1. 下载 MaintenanceSolution.sql。

  2. 执行 MaintenanceSolution.sql。此脚本创建您需要的存储过程。

  3. 创建cmd文件来执行存储过程;例如:
    sqlcmd -E -S .\SQLEXPRESS -d master -Q "执行 dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = N'C:\Backup', @BackupType = 'FULL'" -b -o C:\Log\DatabaseBackup.txt

  4. 在 Windows 计划任务中,创建任务以调用 cmd 文件。

  5. 安排任务。

  6. 启动任务并验证它们是否成功完成。

【讨论】:

  • 我应该在哪里指定登录信息?
  • @HasanGürsoy 如果您正在创建运行 SQLCMD(带有或不带有 BAT 文件)的计划任务,我建议您使用 SQLCMD 的“-E”参数进行 Windows 身份验证。为此,请为作为 Windows 计划任务所有者的 Windows 用户定义 SQL Server 登录名。如果不清楚任务在哪个窗口登录,请将“WHOAMI”(DOS 命令)放入 BAT 文件并捕获 BAT 文件输出,以查看谁在执行。
  • @HasanGürsoy 或者,对于 SQL Server 身份验证,我会将密码放在 Windows 计划任务中(权限控制谁可以读取它),而不是将其放在任何地方的文件中。它在 BAT 文件命令行上。如果它是传递给 BAT 文件的第一个参数,那么在 BAT 文件中,您可以将其称为 %1,例如在 SQLCMD 行上。
【解决方案3】:

SQL Server Express 版本在某些方面受到限制 - 一种方式是它们没有允许您安排作业的 SQL 代理。

有一些第三方扩展可以提供该功能 - 看看例如:

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 2014-04-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多