SQL2000的数据库直接附加到2008会不会有问题?求实践过的

解决方案 »

  1.   

    应该没有,但是视图中order by会跟以前不一样
      

  2.   

    貌似会有问题.昨晚,写一个行转列例程,在08下做,结果老是提示" 在 ( 后有语法错误",(前面是 pivot ,后面是 sum
    想了很久,不得要领,后将程序复制到原来在数据库test 下开的一个查询窗口,居然又不错了.查了至少有半个小时,突然发现,原来运行的那个窗口,是在 pubs 数据库下的,而 pubs 数据库是从 2000 中备份后还原出来的!很奇怪会出这样的问题.
      

  3.   

    又查了一下,同一程序在同样从2000恢复的 Northwind 亦报错.
      

  4.   

    不过,在pubs 和 northwind 下可以使用 row_number() 函数.
      

  5.   

    打开查询窗口,把当前数据库设置为你附加来的数据库,运行一下下面的程序,看是否会报错,如果不报错,则没问题:
    create table t1(支付ID int,支付名称 nvarchar(10))
    insert into t1 select 1,'刷卡'
    insert into t1 select 2,'现金'
    insert into t1 select 3,'挂账'
    create table t2(支付信息ID int,支付方式ID int,支付金额 int,支付时间 DateTime)
    insert into t2 select 1,1,100,'2011-10-09 11:28:16.780'
    insert into t2 select 2,1,50,'2011-10-09 11:38:19.153'
    insert into t2 select 3,2,200,'2011-10-09 13:28:16.780'
    insert into t2 select 4,2,100,'2011-10-15 11:28:16.780'
    insert into t2 select 5,2,50,'2011-10-15 11:38:19.153'
    insert into t2 select 6,3,200,'2011-10-15 13:28:16.780'
    go
    declare @s nvarchar(max),@s1 nvarchar(max)
    --获得列标头[a],[b]
    select @s=isnull(@s+',','')+'sum(['+ltrim(支付id)+ ']) as ['+ 支付名称 +'金额]',@s1=isnull(@s1+',','')+'['+ltrim(支付id)+']' from t1
    exec('select dt as 支付时间,'+@s+' from(select convert(varchar(10),支付时间,120)dt,'+@s1+' from t2 pivot(sum(支付金额) for 支付方式ID in('+@s1+'))b)t group by dt')go
    drop table t1,t2
    go你可以在2008里新建一个数据运行它,肯定是没问题的.