如何直接从T-SQL查询IIS Web日志

时间:2016-07-27 19:58:30

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

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

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

  1. 使用TaskScheduler运行Powershell脚本以运行IIS Web日志的LogParser查询并将结果导出为CSV
  2. 使用SQL Agent运行SSIS包以将CSV导入SQL Server表
  3. 在MVC网页上查看表格结果
  4. 我真正想要做的是让MVC网页中的用户单击一个按钮来触发(通过actionlink)重新查询IIS weblog的存储过程,通过SQL Agent Job运行SSIS导入包,以及在屏幕上显示结果。

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

    SQL Server的状态是否可以实现这一点? (我正在运行2014版和IIS版本8.5)。

1 个答案:

答案 0 :(得分:0)

正如@Malik所提到的,sp_start_job可用于运行未安排的代理作业。

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

  1. 运行PowerShell脚本,将脚本直接粘贴到代理作业步骤中。我必须确保我有PowerShell设置的代理。
  2. 运行SSIS包以将CSV导入SQL表。
  3. 我的存储过程非常简单:

    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