将Sqlserver2012Express的mdf文件同步到SqlServer2008

背景:当下电脑上有SqlServer2008的完整安装,他人提供给了我2012版本的mdf文件,但是打开后无法附加2012的mdf文件,因为版本不一致。

解决办法:

 

1,首先安装了SqlServer2012 Express的核心引擎,创建了2012的实例。从而可以用2008 Studio打开该实例,但是无法打开“附加”功能的交互窗体,猜测是视图版本不一致。

2,继续安装SqlServer2012 Express的Studio,则可以用2012 Studio打开实例、也可以用2008 Studio打开实例,而后打开“附加”功能,附加mdf从而创建了2012版本的数据库。

 

要将2012版本的数据库同步复制到2008版本,还需要继续操作:

 

1,2012 Studio中可以创建脚本,其中“高级”处的配置“要编写脚本的数据的类型”要是“架构和数据”。结果生成的数据库脚本不能够在2008上成功执行。

USE [master]
GO
/****** Object:  Database [PAMPFlowConfig]    Script Date: 2014/4/2 16:52:45 ******/
CREATE DATABASE [PAMPFlowConfig]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'PAMPFlowConfig', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\PAMPFlowConfig_new.mdf' , SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'PAMPFlowConfig_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\PAMPFlowConfig_new_log.LDF' , SIZE = 3136KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [PAMPFlowConfig] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [PAMPFlowConfig].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
USE [PAMPFlowConfig]
GO
/****** Object:  Table [dbo].[Case_Config_Annuity_Fee]    Script Date: 2014/4/2 16:52:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Case_Config_Annuity_Fee](
	[country] [varchar](10) NOT NULL,
	[year] [int] NOT NULL,
	[applicantType] [int] NOT NULL,
	[appType] [int] NOT NULL,
	[amount] [decimal](18, 2) NOT NULL,
	[currency] [varchar](32) NOT NULL,
 CONSTRAINT [PK_Case_Config_Annuity_Fee] PRIMARY KEY CLUSTERED 
(
	[country] ASC,
	[year] ASC,
	[applicantType] ASC,
	[appType] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

2,继而尝试使用2008Studio生成脚本,其中设置“编写数据的脚本”要为True。该脚本不会自动创建database,所以要首先创建一个2008版本的对应新数据库,然后直接执行该脚本则可将数据库结构与数据都成功复制!

3,因为我们在开发时经常改动数据库,从而需要比较数据库的区别并同步,所以此时最好也同样使用Sql Compare工具检查一下两个数据库是否一致。如果不一致,直接使用该工具的同步功能进一步调整。

 

相关知识:

1,数据库的导入导出功能使用时,如果有identity列,则要选中“启用标识插入”。否则会插入失败。

2,如果一个表temp表中id列为自增列,则

insert into temp(id)
select 1

 会报错,因为自增列不允许插入。

解决方法:

TRUNCATE TABLE temp
SET IDENTITY_INSERT temp ON

 即清空表,而后将该字段置为可插入,则可成功执行。而后将其重新置为不可插入即可:

SET IDENTITY_INSERT temp OFF

 

 

 

转载于:https://www.cnblogs.com/zhaoyijie/p/3641277.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值