无法从TST执行远程存储过程(SQL自动化工具)

时间:2011-11-25 17:04:15

标签: sql sql-server unit-testing

我目前正在调查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运行测试时,转轮将失败并显示DTC事务失败消息:

  

链接服务器“X.X.X.X”的OLE DB提供程序“SQLNCLI10”返回消息“事务管理器已禁用其对远程/网络事务的支持。”。

     

错误:7391,无法执行操作,因为链接服务器“X.X.X.X”的OLE DB提供程序“SQLNCLI10”无法启动分布式事务。

我已经确认MS DTC将允许QA SQL服务器上的远程连接,入站和出站呼叫。

此外,在查询窗口中运行存储过程并返回正确的结果集

EXEC [X.X.X.X].databasename.dbo.Status 17254, 3 ,'2011-11-20 00:00:00' 

关于如何纠正这个问题的任何想法?

我是否应该修改查询以包含事务,因为返回的错误包括'无法开始分布式事务

2 个答案:

答案 0 :(得分:1)

您是否尝试过Distributed Transaction Issue for Linked Server in SQL Server 2008中描述的每个步骤?

答案 1 :(得分:0)

我很感兴趣您正在使用SQL Server单元测试框架。在Red Gate,我们正在研究这些工具的使用,我们希望很快就能在SSMS中发布一个图形单元测试运行器。见www.sql-test.com。该工具基于tSQLt开源框架。这是你遇到的那个吗?

您是否有兴趣通过向我们提供有关您的单元测试要求的反馈来帮助我们?