我有一种情况,我在服务器A上有一个目录,在服务器B上有一个相同的命名目录。我在服务器B上使用同义词,以便一些表实际上正在通过到服务器A。
这样,从ServerB.Table调用select *实际上是透明地从ServerA.Table返回数据。当我正在选择时,这似乎工作正常,如果我手动插入tsql脚本也可以正常工作,但是,当我使用ADO.NET适配器时,它给我一个错误说“不支持针对SelectCommand的动态SQL生成不会返回任何基表信息。“这通常意味着在返回数据时没有可用的主键信息。有没有办法解决? (我最好能够继续使用同义词,因为它实际上不是排除其使用的选项)。
我知道有一个“ID”列始终是主键,如果需要,我可以根据需要将主键信息硬编码回ado.net适配器/数据表。
谢谢!
答案 0 :(得分:1)
您正在使用SQLCommandBuilder
获取SQL
数据修改操作。
由于远程表没有返回元数据,因此命令构建器无法生成适当的SQL
来更新或删除表,因为它不知道将哪个字段用作PK
。 / p>
您应该为数据适配器提供自己的UpdateCommand
和DeleteCommand
。
有关代码,请参阅this link。