使用 Log Parser 將 IIS LOG 轉入 SQL 2005 Express

摘要:使用 Log Parser 將 IIS LOG 轉入 SQL 2005 Express

在參考 瓶水相逢.Net  LogParser IIS Log 匯入SQL Server 2005 ,實做轉入IIS LOG 到SQL2005 Express的時候,

發生一個錯誤訊息,
Error Message: [Microsoft][ODBC SQL Server Driver][SQL Server]在sys.servers 中找不到伺服器
 '機器\SQLEXPRESS'。請確認所指定的伺服器名稱是否正確。
如果需要,請執行預存程序 sp_addlinkedserver,將伺服器加入 sys.servers。
 
感覺這個錯誤很奇怪,因為程式會先連到 我的機器\SQLEXPRESS 去開新的資料表,
但將資料轉進去的動作,就出現上述的錯誤,
後來把Driver改為SQL Native Client 方式,不是透過ODBC方式,就排除這個狀況。
 
使用語法如下(我採用本機信任連線方式):
logparser "SELECT * INTO LogsTable FROM D:\iislog\123456.log " -oConnString:"Driver={SQL Native Client}; Server=機器\SQLEXPRESS; Database=你的資料庫;Trusted_Connection=yes;" -ignoreMinWarns:OFF -createTable:ON
 
附上我使用的指令
合併欄位要AS 才不會發生錯誤
logparser "SELECT TO_LOCALTIME(TO_TIMESTAMP([date], [time])) AS LOCALTIME, [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 IISLog2 FROM D:\IISLog\xxxx.log" -oConnString:"Driver={SQL Native Client}; Server=xxxxx\SQLEXPRESS; Database=Postxxxxxx ;Trusted_Connection=yes;" -ignoreMinWarns:OFF -createTable:ON
 
C:\Program Files (x86)\Log Parser 2.2>logparser "SELECT TO_LOCALTIME(TO_TIMESTAMP([date], [time])) AS LOCALTIME, [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 IISLog FROM D:\IISLog\u_ex09073118.log  " -oConnString:"Driver={SQL Server}; Server=.\SQLEXPRESS; Database=IISLog ;Trusted_Connection=yes;" -ignoreMinWarns:OFF