'<' is an unexpected token. The expected token is '='. Line 54, position 7.
или
'<', hexadecimal value 0x3C, is an invalid attribute character. Line 81, position 7.
Блоги и форумы стыдливо молчат по поводу этой ошибки, хотя о ней спрашивают.
Причина проста - некоторые программы повреждают XML-файлы при открытии. В данном случае поврежден файл web.config, находящийся по C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\CONFIG
понедельник, 1 ноября 2010 г.
среда, 13 октября 2010 г.
Server Extension 2002 corrupts MS WORD documents during downloading (Server Extension 2002 повреждает файлы MS WORD при скачивании)
Симптомы волшебные, как всегда. Присутствует plain-html static веб-сайт, проще некуда, куда пользователь закачивает документы в формате Microsoft Word и редактирует странички при помощи Microsoft Frontpage. Если скачивать эти документы из папки напрямую, то все ОК. Если пробовать их скачать через ссылку на веб-сайте - файл оказывается поврежденным и короче на 1 байт.
Сравнив работающий и неработающий файл, я выяснил, что в файле присутствует hyperlink, содержащий строчку "https://". В неработающем файле эта строчка была заменена на "http://", что нарушило CRC.
Я не могу сказать точно, что повреждает файл, но на других серверах без Server Extension мы никогда не имели такой проблемы. Так что решим, что это виноват он.
Проблему решили заменой "https://" на "http://" в документах.
Сравнив работающий и неработающий файл, я выяснил, что в файле присутствует hyperlink, содержащий строчку "https://". В неработающем файле эта строчка была заменена на "http://", что нарушило CRC.
Я не могу сказать точно, что повреждает файл, но на других серверах без Server Extension мы никогда не имели такой проблемы. Так что решим, что это виноват он.
Проблему решили заменой "https://" на "http://" в документах.
вторник, 28 сентября 2010 г.
OLE DB provider 'SQLOLEDB' was unable to start a distributed transaction.
В интернете полно решений по поводу этой задачи. 99.9% из них просто перепечатывают следующую статью:
http://support.microsoft.com/kb/873160
Но что делать, если мы все вышеперечисленное сделали, а оно не работает?
Нигде я не нашел упоминания о том, что для корректной работы MS DTC требуется, чтобы все хосты, участвующие в распределенной транзакции, могли разрешать имена друг друга в NetBios. Если у них разные DNS-серверы или они в разных доменах, это может стать проблемой. В таком случае достаточно прописать имена друг друга им в host файлах или использовать любое другое аналогичное решение.
http://support.microsoft.com/kb/873160
Но что делать, если мы все вышеперечисленное сделали, а оно не работает?
Нигде я не нашел упоминания о том, что для корректной работы MS DTC требуется, чтобы все хосты, участвующие в распределенной транзакции, могли разрешать имена друг друга в NetBios. Если у них разные DNS-серверы или они в разных доменах, это может стать проблемой. В таком случае достаточно прописать имена друг друга им в host файлах или использовать любое другое аналогичное решение.
четверг, 2 сентября 2010 г.
Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: ]
Опять забавные симптомы: можно подключиться к SQL серверу удаленно, но если попробовать подключиться локально - доступа нет, в event log эта ошибка. Решается просто - выключением UAC либо right click - Run as Administrator.
среда, 17 марта 2010 г.
Set ConnectionString property in DTExec (SSIS)
Минут 10 ковырялся с этим. Вот результат:
dtexec /file NewSnapshot.dtsx /set \package.connections[{ConnectionID}].InitialCatalog;SmartStax_tmp /set
\package.connections[{ConnectionID}].ConnectionString;\""Data Source=Server;Initial Catalog=Database;Provider=SQLNCLI.1;Integrated
Security=SSPI;Auto Translate=false;\"" /set \package.connections[{ConnectionID}].InitialCatalog;SmartStax /set
\package.connections[{ConnectionID}].ConnectionString;\""Data Source=Server;User ID=login;Password=password;Initial
Catalog=database;Provider=SQLNCLI.1;Auto Translate=false;"\"
dtexec /file NewSnapshot.dtsx /set \package.connections[{ConnectionID}].InitialCatalog;SmartStax_tmp /set
\package.connections[{ConnectionID}].ConnectionString;\""Data Source=Server;Initial Catalog=Database;Provider=SQLNCLI.1;Integrated
Security=SSPI;Auto Translate=false;\"" /set \package.connections[{ConnectionID}].InitialCatalog;SmartStax /set
\package.connections[{ConnectionID}].ConnectionString;\""Data Source=Server;User ID=login;Password=password;Initial
Catalog=database;Provider=SQLNCLI.1;Auto Translate=false;"\"
пятница, 15 января 2010 г.
Change database collation (by force)
Злостно снасильничать над БД и поменять Collation можно следующей последовательностью команд:
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [DatabaseName] COLLATE [new collation name]
ALTER DATABASE [DatabaseName] SET MULTI_USER
Изменить COLLATION всех колонок:
declare @toCollation sysname
SET @toCollation = 'SQL_Latin1_General_CP1_CI_AS' -- Database default collate
SELECT 'ALTER TABLE ' + INFORMATION_SCHEMA.COLUMNS.TABLE_NAME +
' ALTER COLUMN ' + COLUMN_NAME + ' ' + DATA_TYPE +
CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1 then '(max)'
WHEN DATA_TYPE in ('text','ntext') then ''
WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL
THEN '('+(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH)+')' )
ELSE isnull(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH),' ') END
+' COLLATE ' + @toCollation+ ' ' + CASE IS_NULLABLE
WHEN 'YES' THEN 'NULL'
WHEN 'No' THEN 'NOT NULL'
END
FROM INFORMATION_SCHEMA.COLUMNS INNER JOIN INFORMATION_SCHEMA.TABLES
ON INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = INFORMATION_SCHEMA.TABLES.TABLE_NAME
AND INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA = INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA
WHERE DATA_TYPE IN ('varchar' ,'char','nvarchar','nchar','text','ntext')
AND TABLE_TYPE = 'BASE TABLE'
and COLLATION_NAME <> @toCollation
Источник: http://sqlblogcasts.com/blogs/ssqanet/archive/2008/03/12/tsql-to-change-collation-of-database-whats-new-in-sql-2008-then.aspx
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [DatabaseName] COLLATE [new collation name]
ALTER DATABASE [DatabaseName] SET MULTI_USER
Изменить COLLATION всех колонок:
declare @toCollation sysname
SET @toCollation = 'SQL_Latin1_General_CP1_CI_AS' -- Database default collate
SELECT 'ALTER TABLE ' + INFORMATION_SCHEMA.COLUMNS.TABLE_NAME +
' ALTER COLUMN ' + COLUMN_NAME + ' ' + DATA_TYPE +
CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1 then '(max)'
WHEN DATA_TYPE in ('text','ntext') then ''
WHEN CHARACTER_MAXIMUM_LENGTH IS NOT NULL
THEN '('+(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH)+')' )
ELSE isnull(CONVERT(VARCHAR,CHARACTER_MAXIMUM_LENGTH),' ') END
+' COLLATE ' + @toCollation+ ' ' + CASE IS_NULLABLE
WHEN 'YES' THEN 'NULL'
WHEN 'No' THEN 'NOT NULL'
END
FROM INFORMATION_SCHEMA.COLUMNS INNER JOIN INFORMATION_SCHEMA.TABLES
ON INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = INFORMATION_SCHEMA.TABLES.TABLE_NAME
AND INFORMATION_SCHEMA.COLUMNS.TABLE_SCHEMA = INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA
WHERE DATA_TYPE IN ('varchar' ,'char','nvarchar','nchar','text','ntext')
AND TABLE_TYPE = 'BASE TABLE'
and COLLATION_NAME <> @toCollation
Источник: http://sqlblogcasts.com/blogs/ssqanet/archive/2008/03/12/tsql-to-change-collation-of-database-whats-new-in-sql-2008-then.aspx
Подписаться на:
Сообщения (Atom)