服务器: 消息 4451,级别 16,状态 19,行 1
引用多个服务器上的表的视图在 SQL Server 的此 SKU 上不可更新。

解决方案 »

  1.   

    在另一台机器上更新提示又不一样:
    服务器: 消息 4436,级别 16,状态 12,行 1
    UNION ALL 视图 'viewtt'不可更新,因为没有找到分区列。把环境说一下:
    二台机器,一台是服务器,装的是企业版sql,一台是自已的PC,标准的SQL.
      

  2.   

    如果本地或分布式分区视图为不可更新的,则它只能作为原始表的只读复本。可更新的分区视图可展示出原始表的所有功能。在下列情况中,视图被视为可更新的分区视图: 视图是一组 SELECT 语句,这些语句的结果集通过 UNION ALL 语句组合为一个结果集。每个 SELECT 语句引用一个 SQL Server 基表。该表可以是本地表,也可以是使用 4 部分名称、OPENROWSET 函数或 OPENDATASOURCE 函数引用的链接表(不能使用 OPENDATASOURCE 或 OPENROWSET 函数指定直接传递式查询)。 
    说明: 4 部分名称是指:server.database.owner.table。
      

  3.   

    SELECT test, tt, cc, aa
    FROM zyd.testdb.dbo.tt1
    UNION ALL
    SELECT test, tt, cc, aa
    FROM tt2我看不出哪里不符楼上所说?怎么就不可更新?
      

  4.   

    每个基表都拥有键值由 CHECK 约束所强制的分区列。
    看你的有没有。并且看看范围之间是否重叠
      

  5.   

    修改分区视图的条件只有 SQL Server 2000 开发版和企业版允许在分区视图中进行 INSERT、UPDATE 和 DELETE 操作。若要修改分区视图,语句必须满足下列条件: INSERT 语句必须为视图中所有的列提供值,即使基础成员表具有这些列的 DEFAULT 约束或即使它们允许 NULL。对于这些具有 DEFAULT 定义的成员表列,这些语句无法显式地使用关键字 DEFAULT。
    插入到分区列中的值应至少满足一个基础约束;否则,INSERT 操作将因违反约束而失败。....