【发布时间】:2011-09-07 08:29:47
【问题描述】:
我有执行几分钟的 SSIS 包。它将数据复制到我的 PROD 数据库。包从 Sql Server Job 启动。我想在执行包期间使我的网站脱机。如何在执行前关闭我的网站,然后自动重新打开?
我使用 Sql Server 2008 和 IIS6。
谢谢
【问题讨论】:
标签: asp.net sql-server iis ssis
我有执行几分钟的 SSIS 包。它将数据复制到我的 PROD 数据库。包从 Sql Server Job 启动。我想在执行包期间使我的网站脱机。如何在执行前关闭我的网站,然后自动重新打开?
我使用 Sql Server 2008 和 IIS6。
谢谢
【问题讨论】:
标签: asp.net sql-server iis ssis
这是一个可能的选择:
Within the SSIS package:
使用以下命令创建一个名为 StopWebsite.bat 的批处理文件:
iisreset /stop computername
使用以下命令创建另一个名为 StartWebsite.bat 的批处理文件:
iisreset /start computername
在 SSIS 包中,将 执行流程任务 放置在“控制流”选项卡中。从 Execute Process 任务调用第一个批处理文件 StopWebsite.bat。这将停止 Internet 信息服务 (IIS)。
将所有其他任务放在第一个执行流程任务之后。
在控制流选项卡中的所有其他任务之后,放置另一个执行流程任务。调用第二个批处理文件StartWebsite.bat。这将启动 IIS。
请注意,您需要将批处理文件放在 SSIS 包可以从生产环境访问它们的位置。
Within the SQL Server job:
如果您不想在 SSIS 包中执行此操作。您需要在 SQL Server 作业中包含 三个 步骤。
步骤 1 将执行命令 iisreset /stop computername 作为操作系统 (CmdExec)
步骤 2 将调用 SSIS 包。
第 3 步 将执行命令 iisreset /start computername 作为操作系统 (CmdExec)
如果您遇到权限问题,请确保执行该步骤的帐户(通常是 SQL Server 代理帐户)具有在远程服务器上重新启动 IIS 的权限。您也可以尝试使用代理帐户,该帐户将使用域帐户凭据,在following link 屏幕截图中8 - 14 解释了如何在作业类型SSIS 包执行。您可能需要对操作系统 (CmdExec) 作业类型执行类似操作。 How do I create a step in my SQL Server Agent Job which will run my SSIS package?
将computername 替换为您的实际计算机名称或托管您网站的机器的 IP 地址。
我会说选项 #2 更容易维护。
希望对您有所帮助。
【讨论】: