+ -
当前位置:首页 → 问答吧 → SQL2000的数据库直接附加到2008会不会有问题?

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

时间:2011-12-22

来源:互联网

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

作者: shugeer   发布时间: 2011-12-22

没有问题

作者: fredrickhu   发布时间: 2011-12-22

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

作者: koumingjie   发布时间: 2011-12-22

貌似会有问题.

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

很奇怪会出这样的问题.

作者: qianjin036a   发布时间: 2011-12-22

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

作者: qianjin036a   发布时间: 2011-12-22

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

作者: qianjin036a   发布时间: 2011-12-22

我现在就是直接从2000分离数据然后附加到2008中,,执行查询是没有问题,,但在实际应用中还不敢确定,所以问问大家的经验

作者: shugeer   发布时间: 2011-12-22

打开查询窗口,把当前数据库设置为你附加来的数据库,运行一下下面的程序,看是否会报错,如果不报错,则没问题:
SQL code
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里新建一个数据运行它,肯定是没问题的.

作者: qianjin036a   发布时间: 2011-12-22

可能有些地方不会兼容很好吧

作者: pengxuan   发布时间: 2011-12-22

不会。

但不建议这样,除了在兼容性上有差异,
在数据库操作上也存在隐患 (可能因数据库再脱机、分离导致不可用)。

如果确定采用该方式,勤做备份,指定有效备份策略。

作者: claro   发布时间: 2011-12-22