首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Powershell或SSIS将EventViewer错误日志导入sql server表

使用Powershell或SSIS将EventViewer错误日志导入sql server表
EN

Stack Overflow用户
提问于 2015-03-24 08:11:24
回答 1查看 1.3K关注 0票数 1

是否有任何方法将错误日志从事件查看器导入到SQL表并每天安排作业。我想使用powershell脚本或SSIS包。

EN

回答 1

Stack Overflow用户

发布于 2015-03-24 13:05:51

首先,你可以很容易地在网上找到答案,但由于我也想尝试,这里是测试的结果。

创建表

你可以做这样的事情:

代码语言:javascript
复制
CREATE TABLE WinLogs (
    EntryType VARCHAR(255),
    [Source] VARCHAR(255),
    [Message] VARCHAR(4000),
    TimeGenerated datetime
)

创建包

  • 在包装中加入Data Flow task
  • 在包中添加Script Component,其中应该添加4个输出列(箭头显示要更改的内容):EntryType (string 255) 源(字符串255) 消息(字符串4000) TimeGenerated (数据库时间戳)

  • 将以下代码添加到此组件中:
代码语言:javascript
复制
public override void CreateNewOutputRows()
{
    // Get all events from the Application(/System/Security) log from the local server (.)
    EventLog myEvenLog = new EventLog("Application", ".");

    // Create variable to store the entry
    EventLogEntry myEntry;

    // Loop trough all entries (oldest first)
    for (int i = 0; i < myEvenLog.Entries.Count; i++)
    {
        // Get single entry
        myEntry = myEvenLog.Entries[i];

        // Add new records
        this.Output0Buffer.AddRow();

        // Fill columns
        this.Output0Buffer.EntryType = myEntry.EntryType.ToString();
        this.Output0Buffer.Source = myEntry.Source;
        this.Output0Buffer.TimeGenerated = myEntry.TimeGenerated;
        // Take a max of 4000 chars
        this.Output0Buffer.Message = myEntry.Message.Substring(0, (myEntry.Message.Length > 4000 ? 3999 : myEntry.Message.Length - 1));
    }
}
  • 最后一步是添加SQL Server Destination组件(也可以是OLE DB Destination)
  • 创建连接管理器并选择要插入数据的表(查看映射是否正确)。

  • 运行此包,您将看到数据被插入。

源来自本例Eventlog作为源

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29227668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档