查询两个不同的DSN

时间:2010-04-29 13:03:10

标签: dsn

我有一个问题:

<asp:SqlDataSource runat="server" ID="SqlDataSource1" 
ConnectionString="Dsn=Xdb;uid=xxx;pwd=xxxxxxx" ProviderName="System.Data.Odbc" 
SelectCommand="SELECT XReqOrders.LoadNum, XReqOrders.StopSeq, XRecPkgs.DeliveryTime, 
XRecActivity.Address, XReqOrders.OrderOrTripOrRGA, XReqPkgs.Barcode, 
XReqPkgs.Description, XRecPkgs.IsDelivered, XRecPkgs.IsOnStop, YDelInfo.DeliveryDate 
FROM (((XReqOrders INNER JOIN XReqPkgs ON XReqOrders.LoadNumberOrderNumber = XReqPkgs.LoadNumberOrderNumber) 
LEFT JOIN XRecPkgs ON XReqPkgs.Barcode = XRecPkgs.Barcode) 
LEFT JOIN XRecActivity ON XRecPkgs.TranId = XRecActivity.TranId) 
INNER JOIN YDelInfo ON XReqOrders.OMID = YDelInfo.OMID
ORDER BY XReqOrders.StopSeq, XRecPkgs.DeliveryTime">    
</asp:SqlDataSource>

“X”表来自一个数据源而“Y”表来自另一个......但是数据源之间存在连接。我似乎无法弄清楚如何输入两个不同的连接字符串来运行它。

ConnectionString =“Dsn = Xdb; uid = xxx; pwd = xxxxxxx”ProviderName =“System.Data.Odbc” ConnectionString =“Dsn = Ydb; uid = xxx; pwd = xxxxxxx”ProviderName =“System.Data.Odbc”

这可能......我只是错过了一些东西吗?

3 个答案:

答案 0 :(得分:3)

您无法从两个不同的数据库中加入表。根据您正在使用的数据库引擎,您可以在一个指向另一个数据库中的表的数据库中设置“虚拟”或“链接”表,并以此方式进行JOIN。否则,您唯一的选择是在另一个数据库中制作您需要加入的表的副本,并加入到副本中。

答案 1 :(得分:1)

实际的数据库查询是在服务器端运行,而不是在客户端运行,因此没有“快速简便”的方法来加入这两个表。

可能的选择是:

1)在指向另一台服务器的SQL服务器之一上设置“链接服务器”(MSSQL术语,不确定MySql或Oracle中的相应术语,或者即使它们受支持)。

2)个人是否单独选择业务对象,然后在业务逻辑中而不是在数据库中进行连接,手动旋转for循环中的记录或使用.NET中的LINQ等技术。

答案 2 :(得分:0)

正如其他人所说,你必须设置一个&#34;链接服务器&#34;