Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql 通过链接服务器访问Linq到SQL DBML?_Linq To Sql_Sql Server 2008_Linked Server - Fatal编程技术网

Linq to sql 通过链接服务器访问Linq到SQL DBML?

Linq to sql 通过链接服务器访问Linq到SQL DBML?,linq-to-sql,sql-server-2008,linked-server,Linq To Sql,Sql Server 2008,Linked Server,我在一个命名实例中的单个数据库上有一个DBML。该实例有一个链接到另一个服务器/实例中的另一个MSSQL数据库的服务器。实例和数据库都具有相同的dbo级别用户。这两个数据库都是MSSQL 2008 我有一些C代码框架3.5,它使用DBML访问数据库上的表、视图和存储过程。我现在需要访问数据库B上的一个表。我的代码通过链接的服务器连接访问表/实体的最聪明的方式是什么 谢谢。一种干净的方法是在数据库中创建视图,封装另一端的enities。您必须在.dbml文件中手动定义这些实体的主键和关系。完成此操

我在一个命名实例中的单个数据库上有一个DBML。该实例有一个链接到另一个服务器/实例中的另一个MSSQL数据库的服务器。实例和数据库都具有相同的dbo级别用户。这两个数据库都是MSSQL 2008

我有一些C代码框架3.5,它使用DBML访问数据库上的表、视图和存储过程。我现在需要访问数据库B上的一个表。我的代码通过链接的服务器连接访问表/实体的最聪明的方式是什么


谢谢。

一种干净的方法是在数据库中创建视图,封装另一端的enities。您必须在.dbml文件中手动定义这些实体的主键和关系。完成此操作后,只要DTC服务在数据库a上运行,它们就可以像任何其他具有CRUD功能的表一样工作。

尝试将链接服务器添加到本地:

EXEC sp_addlinkedserver     
   @server=N'SERVER',   
   @srvproduct=N'',  
   @provider=N'SQLNCLI',   
   @datasrc=N'SERVER';  
SELECT * FROM sys.servers

EXEC sp_addlinkedsrvlogin '<SERVER>', 'false', '<DOMAIN>\<USERNAME>', '<USER>', '<PASSWORD>';  

我在Entity Framework和LINQ To SQL中使用了SQL同义词,您可以创建一个SQL Synonnym来指向链接的服务器对象,如下所示:

然后执行SQL查询:

Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
    ("SELECT contactname FROM customersSynonym WHERE city = {0}",
    "London");

您可以阅读文档,也可以阅读类似的文档,但使用Entity Framework,它使用相同的原理,使用SQL同义词。

感谢您的回复。我的问题是我不能对数据库模式进行任何更改。这是一个更大的问题。您可以请求更改吗?如果没有,我真的看不到任何其他方式,除非您可以从另一个dbml上下文或连接与DatabaseB对话。
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
    ("SELECT contactname FROM customersSynonym WHERE city = {0}",
    "London");