有一链接服务器,LinkBase1;
一般创建视图没问题:
CREATE VIEW dbo.myView1 
AS
SELECT id ,NAME, sex
FROM OPENQUERY(LinkBase1, 'select * from uniUser')但想创建该视图索引就不行
CREATE VIEW dbo.myView1 WITH SCHEMABINDING
AS
SELECT id ,NAME, sex
FROM OPENQUERY(LinkBase1, 'select * from uniUser')1.请教网友,有没有其它办法创建视图索引??

2.数据库在不同的两台服务器,其中某几个表要链接起来(通过join)
除了链接服务器外有没有其它办法??

解决方案 »

  1.   

    2.数据库在不同的两台服务器,其中某几个表要链接起来(通过join) 
    除了链接服务器外有没有其它办法?? 
    貌似没其他办法了
      

  2.   

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GOCREATE VIEW [dbo].[SE_DocCatalog]
    with SCHEMABINDING --这个也要加
    AS
    SELECT         
    dbo.Alias.AliasID, 
    dbo.Alias.DirID, 
    dbo.Alias.IsMaster, 
    dbo.Alias.docAclAndInherit,
    dbo.Doc.DocVer, 
    dbo.Doc.DocLastModifyBy as LastModifyBy, 
    dbo.Alias.PrimarySortNo as DocSerialNo, 
    dbo.Doc.DocLockStatus,
    dbo.Doc.DocLockBy,
    FROM             dbo.Alias INNER JOIN
                              dbo.Doc ON dbo.Alias.DocID = dbo.Doc.DocID所以在创建索引视图时,要加一个with SCHEMABINDING才可以相关网站信息
    http://www.microsoft.com/china/technet/prodtechnol/sql/2005/ipsql05iv.mspx#EWBAC
     
      

  3.   

    在SQL Server中,在創建視圖時可以使用 
    select item1,item2, case when item3>item4 then item3 
                                       when item3<item4 then item4
                                       when item3=item4 then 'A'
                                 end as alias1 ,item6,item7 
    from tab1
    where .....
    而在oracle 中如果要實現上面功能的視圖可以這樣子創建:
    select item1,item2,item3 alias1,item6,item7 from tab1
    where ..... and item3>item4
    union all
    select item1,item2,item4 alias1,item6,item7 from tab1
    where  .... and item3<item4
    union all
    select item1,item2,'A' alias1,item6,item7 from tab1
    where  .... and item3=item4
      

  4.   


    CREATE VIEW V_T1_c1 WITH SCHEMABINDING 
    AS 
    SELECT c1, COUNT_BIG(*)  
      AS cnt FROM dbo.T1 GROUP BY c1 
    GO 
    CREATE UNIQUE CLUSTERED INDEX 
      

  5.   

    关于第二个问题:SQL2005不是有同义词吗建立同义词,然后直接跟本地表一样用CREATE synonym ......
      

  6.   

    关于第一个问题。 WITH SCHEMABINDING 和 OPENQUERY 会冲突的,肯定不能这么用。就像我在13楼回复的一样。
    如果楼主采用那个方式,应该这个问题也解决了。
      

  7.   

    执行
    CREATE VIEW dbo.myView1 WITH SCHEMABINDING 
    AS 
    SELECT id ,NAME, sex 
    FROM OPENQUERY(LinkBase1, 'select * from uniUser') 
    ====================================
    服务器: 消息 1054,级别 15,状态 3,过程 myView1,行 4
    在 schemabound 对象中不允许使用 'Openrowset' 语法。
      

  8.   

    WITH SCHEMABINDING是起到了约束的作用.
    如果在B服务器上建视图索引,(link A), 那么B和A中视图所关联的表结构不能变化,B上的表一但变化,索引视图可以监测到,但是你想一下,如果A上的被关联的表结构变化了,B上的索引如何能够得知呢?你试一下在A上再把B做的link server建一下.
    我估计跨机子建索引视图够呛.......
      

  9.   

    视图索引??要求很高的!视图不能包含UNION子句、TOP子句、ORDER BY子句、Having子句、Rollup子句、Cube子句、compute子句、Compute By子句或Distinct关键字;G. 视图不允许使用某些集合函数,如:Count(*)可以使用count_big(*)代替、avg()、max()、min()、stdev()、stdevp()、var()或varp()等;H. 视图不能使用Select * 这样的语句,也就是说视图的所有字段都必须显示指定;I. 视图不能包含Text、ntext、image类型的列;J. 如果视图包含一个Group By子句,那么他必须在Select列中包含count_big(*);K. 视图中的所有标和用户自定义的函数都必须使用两段式名来引用,即所有者.表或函数名称;L. 所有的基本表和视图都必须使用 Set Ansi_Nulls On 创建;M. 在创建索引时或创建索引后执行IUD时,必须显示或隐式地执行:        Set ANSI_NULLS ON        SET ANSI_PADDING ON        SET ANSI_WARNINGS ON        SET ARITHABORT ON        SET CONCAT_NULL_YIELDS_NULL ON        SET QUOTED_IDENTIFIER ON        SET NUMERIC_ROUNDABORT OFF