1

我有一种情况,我在服务器 A 上有一个目录,在服务器 B 上有一个同名目录。我在服务器 B 上使用同义词,因此某些表实际上只是通过服务器 A。

这样,从 ServerB.Table 调用 select * 实际上是从 ServerA.Table 透明地返回数据。当我进行选择时,这似乎工作正常,并且如果我手动插入 tsql 脚本也工作正常,但是,当我使用 ADO.NET 适配器时,它给我一个错误,说“动态 SQL 生成不支持 SelectCommand不返回任何基表信息。” 这通常意味着在返回数据时没有可用的主键信息。有没有办法解决?(我最好能够继续使用同义词,因为排除它的使用并不是一个真正的选择)。

我知道有一个“ID”列始终是主键,如果需要,我可以将主键信息硬编码回 ado.net 适配器/数据表中。

谢谢!

4

1 回答 1

1

SQLCommandBuilder用于获取SQL数据修改操作。

由于远程表没有返回元数据,因此命令生成器无法生成适当SQL的更新或删除表,因为它不知道将哪个字段用作PK.

你应该提供你自己的UpdateCommandDeleteCommand你的数据适配器。

有关代码,请参见此链接

于 2009-12-25T00:53:06.613 回答