我创建了多个SQL DB维护脚本,我需要按照定义的顺序运行。我有2个脚本。我想运行第二个脚本,只有成功执行第一个脚本。这些脚本包含创建表,存储过程,SQL作业等的查询。
请提出实现此目标的最佳方法。我正在使用MS SQL Server 2012。 我试图在不使用SQL作业的情况下实现它。
答案 0 :(得分:1)
我确定我说的是明显的,这可能是因为我并不完全明白你的意思是什么"成功执行",但如果你的意思是在运行时没有SQL错误: 实现它的最佳方法是为脚本创建一个作业,然后创建两个步骤 - 一个用于第一个脚本,另一个用于第二个脚本。完成这两个步骤后,您将转到步骤1的高级选项并根据需要进行设置。
答案 1 :(得分:0)
您可以创建SQL Server代理作业吗?您可以将步骤设置为步骤1:运行第一个脚本,步骤2:运行第二个脚本。在代理作业设置中,您可以决定步骤1失败时的操作。只是让它不运行第2步。你也可以设置它给你发电子邮件,跳到另一个步骤,运行一些其他代码等...如果第一个代码确实失败了任何错误消息,你的第二个脚本将无法运行。 - 如果你真的需要避免一份工作,你可以在你的第二个脚本中添加一些if exists语句,但这会很快变得非常混乱
答案 2 :(得分:0)
如果两个脚本位于不同的文件中
添加一个语句,该语句将在表中记录完成和日期。更改第二个脚本以首先读取并退出,如果不成功
如果两者都在同一个文件中
确保他们在交易中并在第二个脚本开头读取@@ trancount并退出,如果小于1
答案 3 :(得分:0)
SQL Server 2005的作业调度子系统SQL Server代理维护一组日志文件,其中包含有关已运行的作业的警告和错误消息,写入%ProgramFiles%\ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG目录。 SQL Server将维护最多九个SQL Server代理错误日志文件。当前日志文件名为SQLAGENT .OUT,而归档文件按顺序编号。您可以使用SQL Server Management Studio查看SQL Server代理日志。