Назад | Перейти на главную страницу

Журнал IIS 7.5: sql server vs file

Я хочу знать, является ли IIS для входа непосредственно на sql-сервер затратным по ресурсам, и лучшее решение, возможно, создает файлы журнала, и каждый час импортирует эти файлы на sql-сервер.

Стоит ли регистрировать каждый запрос напрямую на sql server? Страницы открывают подключение к базе данных в любом случае для каждого запроса.

Начало здесь http://weblogs.asp.net/steveschofield/archive/2007/12/20/iis7-post-57-how-to-setup-odbc-logging-in-iis-7-0.aspx

Лично я никогда этого не делал; скорее я установил сценарий для импорта старых файлов журнала IIS в базу данных SQL с помощью Logparser.

Вот сценарий PowerShell, который я использую

### Parameters ###
$iisLogLocation = "$env:systemdrive\inetpub\logs\logfiles"
$logParserLocation = "C:\Program Files\Log Parser 2.2"

### Main Script ###
$files = Get-ChildItem $iisLogLocation -Recurse |
    Where-Object{$_.LastWriteTime -le (Get-Date).Subtract((New-TimeSpan -Days 7))}

if ($files.Count -gt 0){
    foreach ($file in $files){
        $logParserArgs = @"
"SELECT LogFilename, LogRow, TO_LOCALTIME(TO_TIMESTAMP(date, time)), s-sitename, s-computername, s-ip, cs-method, cs-uri-stem, cs-uri-query, s-port, cs-username, c-ip, cs-version, cs(User-Agent), cs(Cookie), cs(Referer), cs-host, sc-status, sc-substatus, sc-win32-status, sc-bytes, cs-bytes, time-taken INTO IisLogData FROM $($file.FullName)" -o:SQL -server:.\sql01 -database:logs -ignoreIdCols:ON -fixColNames:ON -maxStrFieldLen:1000
"@
        Push-Location $logParserLocation
        LogParser.exe $logParserArgs
        Remove-Item $file.FullName
        Pop-Location
    }
}

Худшее в записи журналов IIS непосредственно на SQL-сервер, а не в текстовый файл, заключается в том, что теперь есть две реальные точки отказа: ваш экземпляр IIS. и сервер базы данных.

Если вы запускаете ведение журнала базы данных на том же компьютере, на котором работает база данных для вашего производственного приложения, вы забираете ресурсы у этого приложения. Базы данных могут блокироваться, им может не хватить места (правда, и на вашем жестком диске, но все же), им требуется более регулярное обслуживание и т. Д. То есть они могут выходить из строя по причинам, совершенно не связанным с вашим приложением. И если это не удается, то данные журнала просто исчезают.

Открытие и запись журналов текстовых файлов требует очень небольших затрат. сценарий commandbreak - это именно та короткая и простая вещь, которая позаботится о перемещении журнала в базу данных; и если db не работает, журнал все еще там.