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

Posted

技术标签:

【中文标题】无法从 TST(SQL 自动化工具)执行远程存储过程【英文标题】:Unable to execute remote stored procs from TST (SQL automation tool) 【发布时间】:2011-11-25 17:04:15 【问题描述】:

我目前正在研究有助于数据库回归测试的 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 server上的存储过程:

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' 

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

更改了 MS DTC 设置,但注册表除外,但我仍然遇到相同的错误。是否可以在存储过程中设置链接服务器,强制它建立连接,而不是本地服务器中的默认设置 阅读后也重新启动了服务器 - ***.com/questions/2931957/…。工作失败【参考方案2】:

我很感兴趣您正在使用 SQL Server 单元测试框架。在 Red Gate,我们正在对此类工具的使用进行一些研究,我们希望尽快在 SSMS 中发布图形单元测试运行程序。请参阅 www.sql-test.com。该工具建立在 tSQLt 开源框架之上。这是你遇到过的吗?

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

【讨论】:

是的,这不会有问题。比起通过 cmets,我更愿意直接发送详细信息。 谢谢!请通过 red-gate dot com 的 David dot Atkinson 直接与我联系。

以上是关于无法从 TST(SQL 自动化工具)执行远程存储过程的主要内容,如果未能解决你的问题,请参考以下文章

SQL2000无法远程登录

如何查看SQL Server2000执行过的SQL语句

SSH 远程执行任务

ssh 远程执行命令

如何开启SQL服务

无法进入远程 SQL Server 2008 上的存储过程