Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL Server Express edition中创建作业_Sql Server_Sql Server 2008 Express_Sql Job - Fatal编程技术网

Sql server 如何在SQL Server Express edition中创建作业

Sql server 如何在SQL Server Express edition中创建作业,sql-server,sql-server-2008-express,sql-job,Sql Server,Sql Server 2008 Express,Sql Job,有人能给我解释一下如何在SQL Server Expressedition中创建作业吗?SQL Server Express,因此不可能只创建SQL代理作业 您可以做的是: 通过创建批处理文件和SQL脚本文件,并通过Windows任务计划程序运行它们,您可以“手动”创建作业。 例如,您可以使用以下两个文件备份数据库: 备份。bat: sqlcmd -i backup.sql backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

有人能给我解释一下如何在
SQL Server Express
edition中创建作业吗?

SQL Server Express,因此不可能只创建SQL代理作业

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

备份。bat:

sqlcmd -i backup.sql
backup database TeamCity to disk = 'c:\backups\MyBackup.bak'
backup.sql:

sqlcmd -i backup.sql
backup database TeamCity to disk = 'c:\backups\MyBackup.bak'
只需将两个文件放在同一个文件夹中,并通过Windows任务调度器执行批处理文件

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


如果要创建的作业用于备份、索引维护或完整性检查,还可以使用Ola Hallengren提供的优秀作业

它由一组存储过程(以及SQL Server非Express版本的SQL代理作业)组成,在中有一节介绍如何在SQL Server Express上运行作业:

如何在SQL Server Express上开始使用SQL Server维护解决方案? SQL Server Express没有SQL Server代理。因此,必须使用cmd文件和Windows计划任务来计划存储过程的执行。遵循以下步骤

SQL Server Express没有SQL Server代理。因此,执行 必须使用cmd文件和 Windows计划的任务。遵循以下步骤

  • 下载MaintenanceSolution.sql

  • 执行MaintenanceSolution.sql。此脚本创建所需的存储过程

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

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

  • 安排任务

  • 启动任务并验证它们是否成功完成


  • SQL Server Express版本在某些方面受到限制—一种是它们没有允许您计划作业的SQL代理

    有一些第三方扩展提供了该功能-请查看,例如:

    • (最新更新自2005年,不再维护)

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

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

    sqlcmd -S servername -U username -P password -i <path of sqljob.sql>
    
    [databasename]
    替换为您的数据库名称。编写SQL脚本时,必须执行
    使用
    执行

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


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

    指定登录信息。如果您指的是SQL代理作业,则该功能在Express edition中不可用。有关其他可能性,请参见此问题的答案:Express edition支持SQL Server Broker,您可以创建自定义机制,如我应该在何处指定登录信息?@HasanGürsoy如果您正在创建运行SQLCMD(带有或不带BAT文件)的计划任务,我建议您使用SQLCMD的“-E”参数,用于windows身份验证。为此,请为windows用户定义SQL Server登录,该用户是windows计划任务的所有者。如果不清楚任务在哪个windows登录下运行,请将“WHOAMI”(DOS命令)放在BAT文件中并捕获BAT文件输出,以查看谁在执行。@HasanGürsoy,或者,对于SQL Server身份验证,我会将密码放在windows计划任务中(权限控制谁可以读取密码),而不是放在任何文件中。它位于BAT文件命令行上。如果它是传递给BAT文件的第一个参数,那么在BAT文件中,您可以将其称为%1,例如在SQLCMD行上。我将在哪里保存该sqljob.sql?我怎样才能确定它何时执行?@WTFZane,这无关紧要,只要批处理文件的执行者能够提供该位置。(在上面的脚本中,将sqljob.sql的路径替换为您使用的任何位置)。记住这里的
    *.sql
    文件只不过是一个文本文件。