У меня есть вспомогательная БД, которая находится на 32-битном сервере sql, и я добавил связанный сервер 64-битной системы,
для выполнения операции импорта в Excel, так как драйвер Jet.oledb не поддерживается на 64-битном сервере SQL Server.
Все работает нормально, но я должен поддерживать транзакции для вставки, обновления, удаления, которые происходят в связанной базе данных сервера,
Я настроил службу DTC на клиентском компьютере и на сервере,
Добавлен блок поверх sp для транзакции при запуске хранимой процедуры, как,
НАЧАТЬ ИСПЫТАТЬ XACT_ABORT НА НАЧАЛО СДЕЛКИ
НАЧАЛО ПОПРОБОВАТЬ
SET XACT_ABORT ON
НАЧАЛО СДЕЛКИ
- код
- код
END TRY
НАЧАТЬ ЛОВУШКУ
IF @@ TRANCOUNT <> 0 ROLLBACK TRANSACTION
- // выдает ошибку при входе на сайт.
ОБЪЯВИТЬ @ErrorMessage NVARCHAR (4000);
ОБЪЯВИТЬ @ErrorSeverity INT;
DECLARE @ErrorState INT;
ВЫБРАТЬ
@ ErrorMessage = ERROR_MESSAGE (),
@ ErrorSeverity = ERROR_SEVERITY (),
@ ErrorState = ERROR_STATE ();
RAISERROR (@ErrorMessage, - Текст сообщения.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
Но выдает ошибочную поговорку,
Запрошенная операция не может быть выполнена, поскольку поставщик OLE DB "Microsoft.Jet.OLEDB.4.0" для связанного сервера "(null)" не поддерживает требуемый интерфейс транзакции.
Это ошибка в функции Openrowset, которую я использовал для чтения данных из листа Excel
т.е.,
SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
'Excel 5.0; HDR = Да; IMEX = 1; База данных = C: \ test.xls ',' SELECT EmployeeID FROM [Sheet $]
где EmployeeID не равен NULL ')
Я действительно застрял и схожу с ума, так как не могу найти никакого решения,
Заранее спасибо за помощь,