84

谁能给我解释一下如何在SQL Server Express版中创造工作?

4

3 回答 3

128

SQL Server Express不包括 SQL Server Agent,因此不能只创建 SQL 代理作业。

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

备份.bat:

sqlcmd -i backup.sql

备份.sql:

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

只需将两个文件放入同一个文件夹并通过 Windows 任务计划程序执行批处理文件。

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


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

它由一堆存储过程(以及非 Express 版本的 SQL Server 的 SQL 代理作业)组成,在常见问题解答中有一个关于如何在 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 "EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = N'C:\Backup', @BackupType = 'FULL'" -b -o C:\Log\DatabaseBackup.txt

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

  5. 安排任务。

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

于 2011-08-26T07:09:48.993 回答
44

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

为此,首先创建一个名为sqljob.bat的批处理文件

sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

servernameusername和替换为您password的。path

然后创建名为sqljob.sql的 SQL 脚本文件

USE [databasename]
--T-SQL commands go here
GO

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

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

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

于 2015-05-12T10:05:23.680 回答
16

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

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

于 2011-08-26T07:10:00.353 回答