Net中的多服务器SQL查询

Net中的多服务器SQL查询,sql,.net,sql-server,Sql,.net,Sql Server,我有一个查询目前在SQL Server Management Studio上成功运行,它从运行查询的SQL Server上的两个数据库和链接的SQL Server上的一个数据库收集信息。查询具有以下结构: SELECT TOP 10 DB1.id_number as BLN, DB1.field1, DB2.field2, DB3.field3 FROM LinkedServer.database1.dbo.table1 DB1 INNER JOIN

我有一个查询目前在SQL Server Management Studio上成功运行,它从运行查询的SQL Server上的两个数据库和链接的SQL Server上的一个数据库收集信息。查询具有以下结构:

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应用程序运行相同的查询?我正在寻找一种解决方案,它不需要在数据库上保存视图

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



谢谢。

您可以使用SqlCommand运行查询。尽管使用ORM进行查询可能有点棘手,但如果可以的话。

您可以使用SqlCommand运行查询。尽管使用ORM进行查询可能有点棘手,但如果可以的话。

您的意思是运行一个功能相同的查询,而不使用链接服务器吗?您可以将此查询放入存储过程,就像应用程序中的其他数据访问步骤一样。关于连接字符串的一个方便的参考:我没有修改数据库的权限,因此我无法为正在提取的数据创建存储过程或视图。我想运行相同的查询,但我不能只打开到主数据库的SQLConnection,创建一个新的SQLCommand,然后使用SQLDataReader获取结果。显然,在查询中涉及链接服务器需要我缺少的其他东西。在我看来,应该有一种方法来传递三个连接字符串,一个用于DB2,一个用于DB3,一个用于链接服务器DB1,但是我还没有找到它。您在SQL Server Management Studio上运行查询时使用的相同凭据应该足以在上使用SQLCommand运行完全相同的查询。NET您的意思是运行不使用链接服务器的功能相同的查询吗?您会像其他数据访问步骤一样将此查询放入存储过程中在您的应用程序中。关于连接字符串的一个方便的参考:我没有修改数据库的权限,因此我无法为正在提取的数据创建存储过程或视图。我想运行相同的查询,但我不能只打开到主数据库的SQLConnection,创建一个新的SQLCommand,然后使用SQLDataReader获取结果。显然,在查询中涉及链接服务器需要我缺少的其他东西。在我看来,应该有一种方法来传递三个连接字符串,一个用于DB2,一个用于DB3,一个用于链接服务器DB1,但是我没有找到它。您在SQL Server Management Studio上运行查询时使用的相同凭据应该足以在上使用SQLCommand运行完全相同的查询。NET您如何将链接服务器包括在SQLCommand中?您会使用多个连接吗?不需要不同的连接。您连接到的服务器知道如何访问链接服务器。好的,那么访问链接服务器的凭据呢?连接到链接服务器时是否会使用相同的主服务器凭据?如果需要直接连接到链接服务器,则需要使用不同的连接字符串进行不同的连接。如果只从主服务器查询链接服务器,则只需要主服务器的凭据,链接服务器的凭据将存储在服务器之间的链接配置中。如何在SqlCommand中包含链接服务器?您会使用多个连接吗?不需要不同的连接。您连接到的服务器知道如何访问链接服务器。好的,那么访问链接服务器的凭据呢?连接到链接服务器时是否会使用相同的主服务器凭据?如果需要直接连接到链接服务器,则需要使用不同的连接字符串进行不同的连接。如果只从主服务器查询链接服务器,则只需要主服务器的凭据,链接服务器的凭据将存储在服务器之间的链接配置中。