понедельник, 1 ноября 2010 г.

An attempt to start/stop instance of service Windows SharePoint Services Web Application on server did not succeed.Re-run the action via UI or command line on the specified server. Additional information is below.

'<' 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

среда, 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://" в документах.

вторник, 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 файлах или использовать любое другое аналогичное решение.

четверг, 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;"\"

пятница, 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