以编程方式检查远程服务器A和远程服务器B之间的“连接”

时间:2013-01-14 12:09:30

标签: c# sql web-services tcp psexec

我们有一个要求(我相信作为构建/部署验证测试(BVT)的一部分)来测试远程服务器A可以“连接”到远程服务器B.

我想在我的LOCAL开发者VM上使用C#开发一个控制台应用程序。然后应该“连接”到远程服务器A.然后需要检查远程服务器A是否可以“连接”到远程服务器B(通过从LOCAL到远程服务器A的原始连接)。

目前我已经生成了一个简单的“helper”exe连接到远程服务器B(使用先前已知的连接字符串指向远程服务器B和SqlConnection类)。 exe作为构建过程的一部分(最后)复制到远程服务器A.然后,构建服务器上的PSEXEC.exe远程启动远程服务器A上的“helper”exe并检查%errorcode%。然后确定BVT是通过还是失败(然后从远程服务器A删除“helper”exe)。

仅供参考,所有计算机都运行Windows Server 2008 R2 x64 Enterprise,并且位于同一本地域中。我是所有3台机器的管理员。

远程服务器A是Web服务器,远程服务器B是SQL数据库服务器。 LOCAL机器将/确实代表构建服务器。此测试很简单,因为“Web服务器可以连接到数据库服务器”。困难在于如何远程完成。

我知道我可以做系统/集成/端到端测试(使用Coded UI等),我们这样做但是也想考虑这个要求/测试(因为服务器和网络配置等是一个与外部方“共同承担责任”,我们无法保证在没有我们所知的情况下任何事情都会发生变化(除了通过服务台流程做出反应)。

我采用的过程似乎是OTT但似乎确实有效(如果我关闭端口等)。是否有完全的.NET方式使用TCPCLient classess或其他等方式?如何在Web服务器上进行Web服务并托管它们并从构建服务器调用它们?其他想法和事情要考虑更多。

2 个答案:

答案 0 :(得分:1)

为什么不在Web服务器上创建一个对SQL服务器执行无害操作的测试页。

该页面可能会执行一个简单的查询(例如,从person中选择top(1)名称)。

我可以在您的问题中看到标记的网络服务。如果要验证与托管Web服务的服务器或托管Web服务的服务器与底层后端服务器(例如数据库)之间的连接,确保(在我看来)最好的方法是调用无害的服务这是一个简单的阅读。检索WSDL是不够的。

答案 1 :(得分:0)

您可以使用管理对象查询和控制域中的计算机和服务器。 http://msdn.microsoft.com/en-us/library/system.management.aspx

SQL Server包含一些特定于管理SQL Server的额外对象。 http://msdn.microsoft.com/en-us/library/ms220749.aspx

如果你有Linqpad:

ManagedComputer mc = new ManagedComputer( "yourserver" );
mc.Dump();

否则创建一个控制台应用程序并创建一个ManagedComputer实例,并使用调试器查询计算机的SQL服务器,以查看可用的信息类型。

你可以看到它是一个很大的主题......