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

posted @ 2009/8/3 22:01 | 閱讀數 : 2282 | 我要推薦 | 3 Comments | 訂閱

 

在參考 瓶水相逢.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

回覆
耀彰 - 2009/9/2 下午 12:02   回覆
# re: 使用 Log Parser 將 IIS LOG 轉入 SQL 2005 Express
請教前輩,我的步驟如下
1.在sql server建置一個iislog資料表,手動將下列欄位建立
-->LOCALTIME,[s-sitename],[s-computername],[s-ip],[cs-method],[cs-uri-stem]......

2.執行前輩的指令 如下語法所述
-->logparser "SELECT * INTO IISLog FROM D:\IISLog\ex0909.log" -oConnString:"Driver={SQL Native Client}; Server=SQLADM; Database=search ;Trusted_Connection=yes;" -ignoreMinWarns:OFF -createTable:ON

但是卻會出現下列錯誤訊息
-->Task aborted.
Error connecting to ODBC Server
SQL State: IM002
Native Error:0
Error Message:[Microsoft][ODBC 驅動程式管理員]找不到資料來源名稱且未指定預設的驅動程式

而我執行sp_addlinkedserver,它出現下列錯誤訊息
-->程序或函數 'sp_addlinkedserver' 必須有參數 '@server',但是並未提供。

煩請前輩指點
謝謝
dotjum - 2009/9/9 下午 05:16   回覆
# re: 使用 Log Parser 將 IIS LOG 轉入 SQL 2005 Express

to 耀彰 :

我調整使用的命令,你在試試看。

耀彰 - 2009/9/14 上午 11:54   回覆
# re: 使用 Log Parser 將 IIS LOG 轉入 SQL 2005 Express
它錯誤訊息不太一樣,會變成下列訊息
-->WARNING: Input format not specified -using TEXTLINT input format.
Error: SELECT clause: Syntax Error: unknown field 'date'

是不是跟iis log的文字檔有影響呢?
謝謝
發表回覆






登入後使用進階評論

Please add 4 and 6 and type the answer here: