有两库两天
db1.dbo.t1
db2.dbo.t2库db2中中建有视图v1 连接 两种
SELECT a.*,b.* FROM db1.dbo.t1 AS a INNER JOIN db2.dbo.t2 as B a.ID= b.subID现在要在视图上建索引 可是怎么也建不成功 需要指定 with SchemaBinding  可是垮库又不能指定 with SchemaBinding部是提示消息 4512,级别 16,状态 3,过程 vTest,第 5 行
无法将 视图'dbo.v1' 绑定到架构,因为名称 'db1.dbo.t1' 对于架构绑定无效。名称必须由两部分构成,并且对象不能引用自身。

解决方案 »

  1.   

    ---索引视图索引视图是具体化的视图--创建索引视图
    create view 视图名 with schemabinding 
    as
    select 语句
    go---创建索引视图需要注意的几点
    1. 创建索引视图的时候需要指定表所属的架构
    --错误写法
    create view v_f with schemabinding 
    as
    select
       a.a,a.b,b.a,b.b
    from
       a join b 
    on
       a.id=b.id
    go---正确写法:
    create view v_f with schemabinding 
    as
    select
       a.a,a.b,b.a,b.b
    from
       dbo.a join dbo.b 
    on
       a.id=b.id
    go
    2.在创建索引视图的select语句时,不使用*,必须指定具体的列名
    --错误写法
    create view v_f with schemabinding 
    as
    select
       *
    from
       dbo.a join dbo.b 
    on
       a.id=b.id
    go---正确写法
    create view v_f with schemabinding 
    as
    select
       a.a,a.b,b.a,b.b
    from
       dbo.a join dbo.b 
    on
       a.id=b.id
    go3.在创建索引视图的select 语句中,不能存在重复的列名,这个不举例了4. 只能为索引视图创建唯一聚集索引
    --正确的写法
    create unique clustered index ix_uniquetb on v_tb
    go--错误的写法 
    create clustered index ix_uniquetb on v_tb
    go