【问题标题】:Multiple server SQL query in .Net.Net 中的多服务器 SQL 查询
【发布时间】:2017-09-01 18:41:57
【问题描述】:

我有一个查询当前在 SQL Server Management Studio 上成功运行,从我运行查询的 SQL Server 上的 2 个数据库和链接的 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 应用程序运行相同的查询?我正在寻找一种不需要在数据库上保存视图的解决方案。

无论您提出何种解决方案,请详细说明连接字符串和安全问题。

谢谢。

【问题讨论】:

  • 您的意思是运行一个功能相同的查询,但不使用链接服务器?
  • 您可以将此查询放入存储过程中,就像应用程序中的所有其他数据访问步骤一样。没有什么不同。
  • 关于连接字符串的方便参考:connectionstrings.com/sql-server
  • 我无权修改数据库,因此我无法为要提取的数据创建存储过程或视图。我想运行同样的查询,但我不能只打开到主数据库的 SQLConnection,创建一个新的 SQLCommand,然后使用 SQLDataReader 获取我的结果。显然,在查询中涉及链接服务器需要我缺少的其他东西。在我看来应该有办法传递三个连接字符串,一个给DB2,一个给DB3,一个给链接服务器DB1,但是我没有找到。
  • 您在 SQL Server Management Studio 上用于运行查询的相同凭据应该足以在 .Net 上使用 SQLCommand 运行完全相同的查询

标签: sql .net sql-server


【解决方案1】:

您可以使用 SqlCommand 运行查询。虽然使用 ORM 可能有点棘手,但如果可以做到的话。

【讨论】:

  • 如何将链接服务器包含在 SqlCommand 中?您会使用多个连接吗?
  • 不需要不同的连接。您要连接的服务器知道如何访问链接的服务器。
  • 好的,那么访问链接服务器的凭据呢?连接到链接服务器时是否会使用与主服务器相同的凭据?
  • 如果您需要直接连接到链接服务器,则需要使用不同连接字符串的不同连接。如果您只从主服务器查询链接服务器,那么您只需要主服务器的凭据,链接服务器的凭据将存储在服务器之间的链接配置中。
猜你喜欢
  • 1970-01-01
  • 2014-10-13
  • 2022-06-10
  • 2014-07-10
  • 2019-09-29
  • 2019-03-04
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多