【问题标题】:How to query IIS web logs from T-SQL directly如何直接从 T-SQL 查询 IIS Web 日志
【发布时间】:2016-07-27 19:58:30
【问题描述】:

我学会了如何使用 LogParser Studio 对 IIS Web 日志进行基本查询,并将 LogParser 查询导出到 PowerShell 脚本中,这很棒,因为我可以让 Windows 任务计划程序按计划运行脚本。

但是,我想知道是否可以使用 T-SQL 脚本而不是使用我当前的过程直接查询 IIS Web 日志:

  1. 使用 TaskScheduler 运行 Powershell 脚本运行 LogParser 查询 IIS Web 日志并将结果导出为 CSV
  2. 使用 SQL Agent 运行 SSIS 包将 CSV 导入 SQL Server 表中
  3. 在 MVC 网页上查看表格结果

我真正想做的是让 MVC 网页中的用户单击一个按钮来触发(通过 actionlink)一个重新查询 IIS 博客的存储过程,通过 SQL 代理作业运行 SSIS 导入包,然后在屏幕上显示结果。

虽然我可以让任务计划程序和代理作业更频繁地运行,但让它按需运行(通过用户点击)可确保查询仅按需运行,而不是在时间间隔内运行其中对查询结果没有需求。

对于 SQL Server 的状态,这样的事情是否可能发生? (我运行的是 2014 版和 IIS 8.5 版)。

【问题讨论】:

  • 是的。您可以致电sp_start_job 执行计划外作业。
  • 工作得很好。 :) 你想把它作为答案发布吗?

标签: tsql iis asp.net-mvc-5 logparser


【解决方案1】:

正如@Malik 提到的,sp_start_job 可用于运行计划外的代理作业。

在这种情况下,我的工作有两个步骤:

  1. 运行 PowerShell 脚本,将脚本直接粘贴到代理作业步骤中。我必须确保为 PowerShell 设置了代理。
  2. 运行 SSIS 包将 CSV 导入 SQL 表。

我的存储过程很简单:

ALTER PROCEDURE [dbo].[RefreshErrorQuery] 
    -- No parameters

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Rigger unscheduled job to run
    exec msdb.dbo.sp_start_job N'Refresh Web Query';
END

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多