A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 咖喱猫 于 2013-7-26 09:28 编辑

用SqlServer2012创建的数据库(或打开过低版本的数据库)再用SqlServer2008打不开了,报错版本问题如下图,如何解决?这个数据库可以改版本么?

1 个回复

倒序浏览
    1.在低版本数据库中,建立一个到高版本数据库的链接,如果你没有使用过链接服务器,那就百度一下吧,很简单的
    2.用sql server的Management studio连接到高版本数据库上,配置一下选项,"SQL Server对象资源管理器"→"编写脚本"中,去掉"包含说明性标头"/"编写USE<数据库>脚本"/"编写if not exists 子句",勾选"编写索引脚本",注意"为服务器版本编写脚本"选择低版本数据库对应的版本,其他选项可以根据实际情况进行设置.
   3.在低版本数据库中创建一个数据库,名称和高版本中的一样
   4.回到高版本数据库,选择全部的用户表(按F7打开对象资源管理器详细信息),点鼠标右键,选择创建脚本,这时,我们欣喜的发现,创建的脚本分为前后两部分,前面部分是创建了表结构,后面部分对每张表添加约束/关联等信息,我们先把前面部分复制下来,粘贴到低版本数据库里面执行,这样,就创建了表结构.
   5.在低版本数据库中执行下面的脚本,将数据从高版本导入:
--设置链接数据库名
DECLARE @LinkDB NVARCHAR(100)
SELECT @LinkDB='[192.168.1.102,3000].[Station_Center]'
--创建一个表变量,存放所有用户表名称
DECLARE @tb TABLE(TableName NVARCHAR(50))
INSERT @tb
select [name] int from sysobjects where xtype='U' order by [name]


--定义需要执行的SQL语句、当前操作的表名、表中是否有标识字段
DECLARE @Sql NVARCHAR(3000),@tbName NVARCHAR(50),@IsISIDENTITY BIT


--通过游标,逐一对各表进行数据导入
declare scu_Ticks CURSOR  LOCAL FORWARD_ONLY READ_ONLY STATIC  
for select TableName from @tb
open scu_Ticks


fetch  from scu_Ticks into @tbName
while (@@fetch_status=0)
BEGIN
--检查是有标识字段,如果有,先关闭
IF EXISTS(SELECT  *
FROM SYSCOLUMNS A INNER JOIN SYSOBJECTS D  ON A.ID=D.ID  AND D.XTYPE='U' AND  D.NAME<>'DTPROPERTIES'
WHERE D.NAME=@tbName AND COLUMNPROPERTY( A.ID,A.NAME,'ISIDENTITY')=1
)
BEGIN
SET @IsISIDENTITY=1
END
ELSE
BEGIN
SET @IsISIDENTITY=0
END

SELECT @Sql='
Truncate TABLE '+@tbName
IF @IsISIDENTITY =1
--有标识字段,先临时关闭
BEGIN
SET @Sql=@Sql+'
SET IDENTITY_INSERT '+@tbName+' ON
'
END
--从链接数据库导入数据
SET @Sql=@Sql+'
insert into '+@tbName+'
select * from '+ @LinkDB+'.dbo.'+@tbName
IF @IsISIDENTITY =1
--恢复标识
BEGIN
SET @Sql=@Sql+'
SET IDENTITY_INSERT '+@tbName+' OFF
'
END
EXEC(@Sql)--执行组合的SQL语句
fetch next from scu_Ticks into @tbName
end
close scu_Ticks
deallocate scu_Ticks


      6.现在,表中有数据了,再把第4步中生产的脚本的后半部分复制过来执行一下,这样,表之间的关联/约束就有了
      7.最后,将视图/函数/存储过程等其他内容通过脚本创建起来.
      其实,我们真正需要解决的是如何将数据自动导入,其他的,都是通过自动生成的脚本来实现的

百度的答案 我安装的最新版本 不能去验证
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马