среда, 22 июня 2011 г.

SQL Server Integration Services (SSIS) запускает SQLDUMPER.EXE и виснет во время выполнения пакета.

Эта проблема возникла у меня почему-то только на Windows7 (на XP все работало нормально). Во время отладки SSIS package на мгновение появлялось DOS-окошко с SQLDUMPER, после чего задачи в Business Intelligence Development Studio оставались желтенькими, но никогда не завершались. Решение этой проблемы такое же странное, как и она сама - надо выключить службу SQL Server VSS Writer.

Источник: http://discussions.virtualdr.com/showthread.php?t=220983

четверг, 16 июня 2011 г.

ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.

У меня это случилось при миграции старого веб-приложения (ASP) на новый веб и сиквел сервер. Были изменены параметры подключения (с ODBC на OLE DB). Приложение подключалось к базе данных, SQL Profiler показывал, что команды исполняются, однако часть кода

set objDBConnection = Server.CreateObject("ADODB.Connection")
Set objRs = Server.CreateObject( "ADODB.RecordSet")
objDbConnection.Open(ConnectionString)
objRs.Execute("EXEC someStoredProcedure")


возвращало закрытый объект objRs и ошибку ADODB.Recordset error '800a0e78' , чего не случалось до миграции.
Немножко поковырявшись и погуглив, нашел следующее: вызовы stored procedures, сделанные через ODBC не возвращают "(x) rows affected", а OLE DB - возвращают. Соответственно, встретив эту строчку в ответе, OLE DB неверно интерпретирует ее как отсутствие данных и закрывает объект. Починить это можно двумя способами - поставив SET NOCOUNT ON вначале кода stored procedure (более правильный способ) или включив no count глобально на уровне сервера (на уровне базы данных, к сожалению, этого не сделать).
В связи с этим приходит следующая мысль: обязательное использование SET NOCOUNT ON в начале кода stored procedure - это хороший тон.

Источник: http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-800a0cc1-errors.html