【发布时间】:2022-06-15 21:50:43
【问题描述】:
我通常在具有多个链接服务器的环境中本地创建查询,每个链接服务器都有自己的登录凭据和不同级别的权限。我通过用户可以输入日期范围或地址以帮助缩小结果范围的简单网页,使同事可以使用这些查询。通常页面有一个连接字符串到包含凭据的数据库。
目前我正在尝试对一个更复杂的查询执行相同的操作,该查询需要我连接到具有单独登录的不同数据库上的多个表。如果我有 2 个连接字符串,它会类似于下面的
ConnectionString = "Data Source=CWP;Initial Catalog=CWProd;Persist Security Info=True;User ID=login1;Password=read;MultipleActiveResultSets=True;Application Name=EntityFramework";
ConnectionString2 = "Data Source=GISP;Initial Catalog=GISProd;Persist Security Info=True;User ID=login2;Password=read2;MultipleActiveResultSets=True;Application Name=EntityFramework";
当我在 Management Studio 上本地运行查询时,我不会有任何问题,因为我只是在每个数据库调用前加上链接的服务器名称。但是我可以理解为什么网页要达到同样的效果并不那么简单。我拥有对相关数据库的读取权限,因此无法创建任何存储过程。是否可以这样做,或者我需要从不同的角度来解决这个问题?
网页无权访问我的链接服务器。
【问题讨论】:
-
为什么不能只做四个部分的名字
LinkedServer.Database.Schema.Table -
取决于您使用的是什么。如果是 EF,那么您将创建 2 个上下文并使用来自两者的数据进行连接。如果直接 ADO 访问,那么您可以再次使用两个连接字符串创建连接,查询每个数据库并连接结果。
标签: c# sql sqlconnection