LogParser: тип данных столбца таблицы SQL «X» несовместим с элементом предложения SELECT «cs-username» (тип STRING) - PullRequest
2 голосов
/ 31 января 2011

Я пытаюсь использовать LogParser для вставки соответствующих строк из файлов журналов IIS в таблицу SQL-Server.

Я создал свою таблицу следующим образом:

CREATE TABLE dbo.WebLog (Id INT IDENTITY, UserName VARCHAR(MAX),
    URL VARCHAR(MAX), DateStampUTC DATETIME)

Вот как я звоню LogParser:

LogParser "SELECT cs-username, cs-uri-stem, TO_TIMESTAMP(date,time) 
INTO WebLog FROM ex*.log 
WHERE cs-uri-stem IN ('urlsThatICareAbout.html') AND cs-username IS NOT NULL" 
-server:<server> 
-database:<database>
-username:<username> 
-password:<password> 
-transactionRowCount:-1 
-ignoreIdCols:ON 
-o:SQL 
-driver:"SQL Server" 
-i:IISW3C

Я получаю следующую ошибку:

SQL table column "UserName" data type is not compatible with
    SELECT clause item "cs-username" (type STRING)

Есть идеи?Являются ли типы STRING и VARCHAR (MAX) несовместимыми?

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Возможно, вы захотите уменьшить его до чего-то вроде NVARCHAR (1000) или даже до 255 или менее.В некоторых старых библиотеках VARCHAR (max) рассматривается как тип TEXT / BLOB.Также может быть разница между VARCHAR и NVARCHAR (для международных символов)

1 голос
/ 17 мая 2013

Попробуйте использовать собственный драйвер SQL Server и не использовать по умолчанию драйвер ODBC для SQL Server - это всегда работало для меня.

LogParser "SELECT cs-username, cs-uri-stem, TO_TIMESTAMP(date,time) 
INTO WebLog FROM ex*.log 
WHERE cs-uri-stem IN ('urlsThatICareAbout.html') AND cs-username IS NOT NULL" 
-server:<server> 
-database:<database>
-username:<username> 
-password:<password> 
-transactionRowCount:-1 
-ignoreIdCols:ON 
-o:SQL 
-driver:"SQL Server Native Client 10.0" 
-i:IISW3C
...