将Sqlserver2012Express的mdf文件同步到SqlServer2008
2014-04-02 18:06
267 查看
背景:当下电脑上有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上成功执行。
2,继而尝试使用2008Studio生成脚本,其中设置“编写数据的脚本”要为True。该脚本不会自动创建database,所以要首先创建一个2008版本的对应新数据库,然后直接执行该脚本则可将数据库结构与数据都成功复制!
3,因为我们在开发时经常改动数据库,从而需要比较数据库的区别并同步,所以此时最好也同样使用Sql Compare工具检查一下两个数据库是否一致。如果不一致,直接使用该工具的同步功能进一步调整。
相关知识:
1,数据库的导入导出功能使用时,如果有identity列,则要选中“启用标识插入”。否则会插入失败。
2,如果一个表temp表中id列为自增列,则
会报错,因为自增列不允许插入。
解决方法:
即清空表,而后将该字段置为可插入,则可成功执行。而后将其重新置为不可插入即可:
解决办法:
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
相关文章推荐
- sqlserver2008如何导入mdf,ldf文件
- 在Sqlserver2008上附加Sqlserver2005分离的MDF文件
- 【SQLServer2008】之如何导入mdf,ldf文件、导入.mdf文件报错解决问题以及如何获得Authenticated Users 权限
- sqlserver2008 出现文件激活错误。物理文件名 'd:数据库aa/news.mdf' 可能不正确
- rsync+lsyncd实现(本地以及远程)文件实时同步
- 通过rsync+inotify实现多服务器文件的实时同步
- RSync文件备份同步 Linux服务器rsync同步配置图文教程
- rsync+inotify实现无间隔文件同步
- Microsoft SyncToy 文件同步工具
- 使用rsync +cwrsync实现windows和linux的文件同步
- 用 FreeFileSync 在 Ubuntu 中对比及同步文件
- Linux下使用rsync同步文件
- 使用 rsync 从windows到Linux同步大量小文件
- rsync+lsyncd实现文件实时同步
- rsync + inodify 实现文件同步
- 关于生成POS端sqlLiteDB文件 实现全量同步
- 利用端端Clouduolc的双向同步和单向同步,打造多机热备份的文件下载服务器
- 烂泥:linux文件同步之rsync学习(一)
- 基于rsync+inotify实现文件实时同步
- SQL Server数据库mdf文件中了勒索病毒.FREEMAN。扩展名变为FREEMAN