链接服务器的ASP.NET连接字符串格式是什么?
我有一个数据库服务器,无法使用提供的凭据连接到该服务器。但是,在同一服务器的登台版本上,有一个链接服务器指向生产数据库。登台服务器和链接服务器都具有相同的架构。
我已经放心,我应该期望能够在我们上线之前连接到实时服务器。不幸的是,在开发过程中,我需要的不仅仅是暂存数据库中当前的令牌样本记录。因此,我希望连接到链接服务器。
到目前为止,我对这种模式的开发一直是针对使用Subsonic对象的登台服务器本身。一切正常。
我可以通过SQL Server Management Studio连接到该链接服务器,然后直接执行查询。我也可以通过使我的连接字符串连接到登台服务器并以以下方式运行查询,来在链接服务器的Cagainst中执行"手动"查询:
SELECT * FROM OpenQuery([LINKEDSERVER],'QUERY')
但是,Subsonic对象是使我能够按时且在预算内完成该项目的原因,因此我不希望在我的代码中进行直接查询。
我正在寻找的是是否有一种方法来声明到链接服务器的连接字符串。我已经看过很多关于该主题的论坛条目,等等,大多数答案似乎完全掩盖了问题的"链接服务器"部分,重点是基本的连接字符串语法。
解决方案
回答
从.NET创建链接服务器没有任何意义,因为链接服务器不过是从一个sqlserver到另一台服务器(sql,file,excel,sybase等)的连接,实际上,它只是一个连接字符串(我们可以在创建链接服务器时可以模仿并做一些其他事情)。
回答
我不相信我们可以在没有OpenQuery语法的情况下直接从应用程序访问链接服务器。根据架构的复杂性,可能需要编写例程或者sproc,以使用实时数据库中的数据填充登台数据库。
我们也可以考虑查看Redgates SQL数据生成器或者任何其他数据生成工具。 Redgates非常易于使用。
还有一个想法可以获取实时数据库的备份,我们可以将其安装在开发中进行测试吗?如果我们只是寻找用于开发和测试的数据,则可能根本不想连接到生产数据库。
回答
在服务器B上创建测试存储过程,该存储过程通过链接的服务器引用服务器A上的数据。例如如果常规存储过程引用了服务器B上的表,则说:
databaseA.dbo.tableName
然后使用链接的服务器名来引用服务器A上的相同数据库/表:
linkedServerName.databaseA.dbo.tableName
如果服务器A的数据库/表/列名称相同,则可以通过一些快速查找/替换工作来做到这一点。
回答
一种方法是创建两个连接字符串,并在需要时访问适当的数据库。
第二种选择是仅为数据库A创建连接,并为Database.good中的数据库B创建链接服务器,我真的很喜欢它。我正在做一些有关Asp.net连接的研究,我还发现对www.macrotesting.com进行宏测试也是很好的来源。谢谢你的文章.....
问候...
梅加纳森.J