2017-09-01 63 views
0

我有一个当前在SQL Server Management Studio上成功运行的查询,它从运行查询的SQL服务器上的2个数据库和链接的SQL Server上的一个数据库收集信息。查询有这样的结构:.Net中的多服务器SQL查询

SELECT TOP 10 
    DB1.id_number as BLN, 
    DB1.field1, 
    DB2.field2, 
    DB3.field3 
FROM 
    LinkedServer.database1.dbo.table1 DB1 
INNER JOIN 
    database2.dbo.table2 DB2 ON DB1.id_number = DB2.id_number 
INNER JOIN 
    database3.dbo.table3 DB3 ON DB3.id_number2 = DB1.id_number2 
WHERE 
    DB1.id_number IS NOT NULL 
    AND DB1.field1 IS NOT NULL 

如何从.Net应用程序运行相同的查询?我正在寻找一种不需要在数据库上保存视图的解决方案。

在您提出的任何解决方案中,请详细介绍连接字符串和安全问题。

谢谢。

+0

你的意思是运行一个不使用链接服务器的功能相同的查询吗? –

+5

您应该将此查询放入存储过程中,就像应用程序中的每个其他数据访问步骤一样。它没有什么不同。 –

+0

有关连接字符串的便捷参考:https://www.connectionstrings.com/sql-server/ – Xedni

回答

2

您可以使用SqlCommand运行查询。尽管使用ORM做这件事可能有点棘手,如果它可以做到的话。

+0

如何将链接服务器包含在SqlCommand中?你会使用多个连接吗? –

+1

不需要不同的连接。您正在连接的服务器知道如何访问链接的服务器。 – Shago

+0

好的,那么访问链接服务器的凭证呢?连接到链接服务器时,是否使用主服务器的相同凭据? –