【发布时间】: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