В настоящее время я изучаю TST (инструмент тестирования автоматизации SQL), который будет способствовать регрессионному тестированию базы данных. Мне удалось создать базовый контрольный пример, который приведен ниже:
/*
Verification of stored proc - FOH_Status
Returns online availabity status for specified date
*/
/****** Object: StoredProcedure [dbo].[SQLTest_Status] Script Date: 11/23/2011 16:56:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dbo.SQLTest_Status
AS
BEGIN
---CREATE A TEMP TABLE
CREATE TABLE #ControlValue (
ControlMode TINYINT
)
INSERT INTO #ControlValue EXEC dbo.Status 17254, 3 ,'2011-11-20 00:00:00'
DECLARE @CONTROL TINYINT
SET @CONTROL = (SELECT TOP 1* FROM #ControlValue)
EXEC TST.Assert.Equals 'ControlMode enabled for specified date', 1, @CONTRO
END
GO
Затем я перехожу к ссылке на наш сервер QA SQL, которая прошла успешно. Затем изменил хранимую процедуру для вызова хранимой процедуры на сервере QA SQL:
INSERT INTO #ControlValue EXEC [X.X.X.X].databasename.dbo.Status 17254, 3 ,'2011-11-20 00:00:00'
После запуска теста от TST Runner произойдет сбой с сообщением об ошибке транзакции DTC:
Поставщик OLE DB «SQLNCLI10» для связанного сервера «X.X.X.X» вернул сообщение «Менеджер транзакций отключил свою поддержку удаленных / сетевых транзакций.».
Ошибка: 7391. Операция не может быть выполнена, поскольку поставщику OLE DB "SQLNCLI10" для связанного сервера "X.X.X.X" не удалось начать распределенную транзакцию.
Я уже подтвердил, что MS DTC будет разрешать удаленные подключения, входящие и исходящие вызовы на сервере QA SQL.
Кроме того, запустите хранимую процедуру в окне запроса и вернет правильный набор результатов
EXEC [X.X.X.X].databasename.dbo.Status 17254, 3 ,'2011-11-20 00:00:00'
Есть идеи, как решить эту проблему?
Должен ли я изменить запрос, чтобы включить транзакцию, поскольку возвращаемая ошибка включает 'не удалось начать распределенную транзакцию'