LogParser: тип данных столбца таблицы SQL "X" несовместим с элементом предложения SELECT "cs-username" (тип STRING)
Я пытаюсь использовать 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 ответа
Решение
Возможно, вы захотите уменьшить его до чего-то вроде NVARCHAR(1000) или даже 255 или меньше. VARCHAR(max) видится как тип TEXT/BLOB некоторыми более старыми библиотеками. Это также может быть разница между VARCHAR и NVARCHAR (для международных символов)
Попробуйте использовать собственный драйвер 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