【问题标题】:using sql server 2005 synonyms for table causes dynamic query generation errors对表使用 sql server 2005 同义词会导致动态查询生成错误
【发布时间】:2009-12-23 22:11:53
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: sql sql-server ado.net synonym


    【解决方案1】:

    您正在使用SQLCommandBuilder 获取SQL 进行数据修改操作。

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

    您应该为您的数据适配器提供自己的UpdateCommandDeleteCommand

    代码见this link

    【讨论】:

    • 是的,不幸的是,我希望有一种方法可以做到这一点,而无需手工制作所有更新命令:/ 或者最糟糕的是,只需在表上设置主键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多