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.最后,将视图/函数/存储过程等其他内容通过脚本创建起来.
其实,我们真正需要解决的是如何将数据自动导入,其他的,都是通过自动生成的脚本来实现的
百度的答案 我安装的最新版本 不能去验证 |