当前位置:首页 » 编程语言 » sql高版本数据库在低版本使用
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql高版本数据库在低版本使用

发布时间: 2022-12-27 01:40:48

Ⅰ 如何把高版本的sqlserver 还原到低版本的 sqlserver

是否大家有遇到过开始使用高版本的sql server当部署时却被告知服务器环境只能使用当前低版本的sql server,我就遇到了,我开发时使用的是sql 2008 r2 到部署时被告之段时间内不能升级到r2,只要将就部署了 。 但高版本迁移到低版本普通方法是行不通的,
1.我直接在sql2008附加sql2008r2的数据库,结果 “版本为 661,无法打开。此服务器支持 655 版及更低版本。不支持降级路径。” 死路一条,呵呵。
2.在sql2008里建立新数据库,然后通过复制数据方法,结果“ LiveUpdate returned a non-critical error. Available content updates may have failed to install.” 又是死路一条。
3.用数据库镜像,结果“由于数据库可能有尚未备份的大容量日志记录更改,所以无法启用数据库镜像。必须在镜像上还原主体数据库的上一次日志备份。”意思是你不需要去还原,又是死路一条 4.用用导入导出的功能吧。 这个方法关键是如何确保保留原有表结构的主键、外键等 分两个情况,对于数据库数据量小的,可以很方便的解决 a.小数据的情况 1.先在低版本的服务器上建立同名的数据库。 2.在高版本的服务器上右键点击目标数据库->任务->生成脚本 3.在选择对象->选择特定数据库对象 4.选择表、视图、存储过程,然后下一步 5.关键在这,这一步里,请选择”高级“,选项里选择[编写DROP和Create脚本]项的”编写DROP和Create脚本“,以及[编写脚本和数据类型]项的“架构和数据" 6.保存脚本 7.在低版本的数据库下执行脚本即可。 b.大数据情况 按理应该也可以通过类似包含架构和数据的方式来做,但是由于包含大数据的时候脚本文件太大,无法在分析器里执行,所以我们得绕一下。 1~4步和a情况相同 5.这步我们选择”高级“,选项里选择[编写DROP和Create脚本]项的”编写DROP和Create脚本“,以及[编写脚本和数据类型]项的“架构" 6.保存脚本 7.在低版本的数据下执行脚本,注意(ALTER TABLE 表名 WITH CHECK ADD CONSTRAINT [外键名] FOREIGN KEY(字段) REFERENCES 表名(字段))这个先不要执行。 8.现在可以通过导入导出任务先将表的内容导入到低版本的数据库内 9.再执行脚本内(ALTER TABLE 表名 WITH CHECK ADD CONSTRAINT [外键名] FOREIGN KEY(字段) REFERENCES 表名(字段))这样的语句,此处将表的外键附加上。 10.。。大功告成

Ⅱ 为什么sql server 高版本的数据库不能附加低版本 mdf文件

是这样的,662是SQL Server 2008 SP2以后的数据库版本号,SP2之前的SQL Server 2008 x0dx0a的数据库版本好是655,而661是SQL Server 2008 R2的数据库版本号,本身SQL Server 2008 R2的版本要比SQL Server 2008 要高,按常理661版的数据库文件是不能附加到支持655版本号的SQL Server 2008里的。至于出现这个蛋疼的提示是因为微软在SQL Server 2008 SP2里加入了15k分区数的功能,而发布SP2之前就已经发布了SQL Server 2008 R2了,由于SQL Server 2008 R2 RTM并不支持15k分区的功能,如果按常规SQL Server 2008还保持655的版本号的话就可能会出现附加15k分区的数据文件到SQL Server x0dx0a2008 R2 RTM中,这肯定是不能附加的,所以微软为了解决这个难题,就打破常规,SQL Server 2008 SP2里将数据库的版本号改为662,这样,由SQL Server 2008 R2 RTM的数据库版本号比SQL Server 2008 SP2的低,所以自然就不能附加了,避免了麻烦,不过为了一15k分区的功能改变了版本号带来的副作用就像楼主这种情况了。x0dx0a这时问题的根本缘由。x0dx0a其实说白了,你是拿SQL Server 2008 R2的数据库附加到SQL Server 2008中,这肯定是不行的。要么将你现在的数据库实例升级到 SQL Server 2008 R2并安装最新的SP补丁之后再附加。要么将chat数据库附加到SQL Server 2008 R2版的数据库实例里,生成SQL Server 2008版的脚本文件,使用脚本文件部署到SQL Server 2008 SP2里。x0dx0ax0dx0a至于前边有朋友说用备份的方式,如果理解了我前边说的就知道肯定也是行不通的。

Ⅲ sql高版本附加到低版本怎么办

不行的,普遍规律,低版本DBMS创建的数据库可以附加到高版本DBMS中,而高版本DBMS创建的数据库附加到低版本DBMS中提示出错,版本不够。

Ⅳ sql高版本向低版本附加报错,谁能提供解决的方法呀

  1. SQL 只支持向后兼容,

  2. 所以高版本的数据库不能在低版本的SQL 上附加。

  3. 解决办法:先在同版本SQL下附加数据库,

  4. 在使用SQL 脚本导出表结构与数据库,

  5. 或存储过程等,再在低版本数据库上创建一个新数据库,

  6. 把脚本执行。

Ⅳ 如何将高版本mysql数据库的数据导入低版本mysql中

mysqlmp可以导出纯sql文本,但是有些建表语句的参数名在高低版本中是不一样的,
比如说在mysql4.*中的引擎指定用type,而mysql5.5的时候就用engine,
可以先把备份的sql文件先导到5.0左右的,会有警告,但是能导成功,然后再从5.0中导出sql文件,最后迁移到5.5的
建议是在数据迁移的时候版本差距别太大,有可能会出现版本兼容问题。

Ⅵ 如何把SQL Server数据库从高版本降级到低版本

由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接【分离/附加】或者【备份/还原】数据库,在
不同版本之间存放。往往就会遇到版本不兼容的问题。前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错:

运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况
下,从低版本升级到高版本,只要不是跨度太大,如2000升级到2012,都不会怎么报错。除非使用了一些新版本不兼容的特性如*=来实现left
join的语句。但是就像上图那样,从高版本还原到低版本的时候,问题就出现了,而且几乎一定会报错。
下面给出几个小建议,例子是从2008 降级到2005:
方法一:使用图形化操作(GUI),打开SSMS(SQL Server Management Studio)

步骤1:右键你要降级的数据库,按下图选择:

步骤2:在对话框中选择:

步骤3:在【高级】中选择下图:

步骤4:把脚本保存起来,然后在SQLServer2005中运行脚本。
详细步骤可以看: 中的13楼的回复,有截图
步骤5:通过【任务】→【导入数据】,把数据从2008导入到使用脚本创建的库上如下图,就完成了:

方法二:使用系统自带的存储过程实现:sp_dbcmptlevel ——将某些数据库行为设置为与指定的 SQL Server 版本兼容
下面是其内部实现代码:

[sql] view plain print?
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
create procere sys.sp_dbcmptlevel -- 1997/04/15
@dbname sysname = NULL, -- database name to change
@new_cmptlevel tinyint = NULL OUTPUT -- the new compatibility level to change to
as
set nocount on

declare @exec_stmt nvarchar(max)
declare @returncode int
declare @comptlevel float(8)
declare @dbid int -- dbid of the database
declare @dbsid varbinary(85) -- id of the owner of the database
declare @orig_cmptlevel tinyint -- original compatibility level
declare @input_cmptlevel tinyint -- compatibility level passed in by user
,@cmptlvl80 tinyint -- compatibility to SQL Server Version 8.0
,@cmptlvl90 tinyint -- compatibility to SQL Server Version 9.0
,@cmptlvl100 tinyint -- compatibility to SQL Server Version 10.0
select @cmptlvl80 = 80,
@cmptlvl90 = 90,
@cmptlvl100 = 100

-- SP MUST BE CALLED AT ADHOC LEVEL --
if (@@nestlevel > 1)
begin
raiserror(15432,-1,-1,'sys.sp_dbcmptlevel')
return (1)
end

-- If no @dbname given, just list the valid compatibility level values.
if @dbname is null
begin
raiserror (15048, -1, -1, @cmptlvl80, @cmptlvl90, @cmptlvl100)
return (0)
end

-- Verify the database name and get info
select @dbid = dbid, @dbsid = sid ,@orig_cmptlevel = cmptlevel
from master.dbo.sysdatabases
where name = @dbname

-- If @dbname not found, say so and list the databases.
if @dbid is null
begin
raiserror(15010,-1,-1,@dbname)
print ' '
select name as 'Available databases:'
from master.dbo.sysdatabases
return (1)
end

-- Now save the input compatibility level and initialize the return clevel
-- to be the current clevel
select @input_cmptlevel = @new_cmptlevel
select @new_cmptlevel = @orig_cmptlevel

-- If no clevel was supplied, display and output current level.
if @input_cmptlevel is null
begin
raiserror(15054, -1, -1, @orig_cmptlevel)
return(0)
end

-- If invalid clevel given, print usage and return error code
-- 'usage: sp_dbcmptlevel [dbname [, compatibilitylevel]]'
if @input_cmptlevel not in (@cmptlvl80, @cmptlvl90, @cmptlvl100)
begin
raiserror(15416, -1, -1)
print ' '
raiserror (15048, -1, -1, @cmptlvl80, @cmptlvl90, @cmptlvl100)
return (1)
end

-- Only the SA or the dbo of @dbname can execute the update part
-- of this procere sys.so check.
if (not (is_srvrolemember('sysadmin') = 1)) and suser_sid() <> @dbsid
-- ALSO ALLOW db_owner ONLY IF DB REQUESTED IS CURRENT DB
and (@dbid <> db_id() or is_member('db_owner') <> 1)
begin
raiserror(15418,-1,-1)
return (1)
end

-- If we're in a transaction, disallow this since it might make recovery impossible.
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sys.sp_dbcmptlevel')
return (1)
end

set @exec_stmt = 'ALTER DATABASE ' + quotename(@dbname, '[') + ' SET COMPATIBILITY_LEVEL = ' + cast(@input_cmptlevel as nvarchar(128))

-- Note: database @dbname may not exist anymore
exec(@exec_stmt)

select @new_cmptlevel = @input_cmptlevel

return (0) -- sp_dbcmptlevel
GO

语法

[sql] view plain print?
sp_dbcmptlevel [ [ @dbname = ] name ]
[ , [ @new_cmptlevel = ] version ]

参数
[ @dbname = ] name
要为其更改兼容级别的数据库的名称。数据库名称必须符合标识符的规则。name 的数据类型为 sysname,默认值为 NULL。
[ @new_cmptlevel = ] version
数据库要与之兼容的 SQL Server 的版本。version 的数据类型为 tinyint,默认值为 NULL。该值必须为下列值之一:
80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008
返回代码值
0(成功)或 1(失败)

注意事项:
后续版本的 Microsoft SQL Server 将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。 改为使用 ALTER DATABASE 兼容级别。

Ⅶ 如何把SQL Server数据库从高版本降级到低版本

直接给SQL Server数据库降级是不支持的。但您可以使用一个灵活的变通方法来解决这个问题。您可以使用SQL Server Management Studio中首先为一个较低的版本生成数据库脚本,然后使用数据导入/导出向导将原来数据库数据传输到高版本数据库中。例如,如果你想降低一个SQL Server 2008数据库到SQL Server 2005,您可以按照以下步骤:
1. 在SQL Server Management Studio 2008中打开SQL Server2008数据库。
2.在对象资源管理器中右键单击数据库名称并选择“任务生成脚本......”
3.在“脚本向导”对话框中,选择数据库的名称,并检查“脚本所有在选择数据库对象”。然后点击“下一步”。
4.设置为SQL Server2005的服务器版本的脚本“选项”。
5. SQL Server 2005中运行脚本。
6. 使用SQL Server导入和导出向导从SQL Server 2008到SQL Server 2005导入数据
同样,如果你想降低一个SQL Server 2005数据库到SQL Server 2000,你也可以在SQL Server 2005 Management Studio中执行上述步骤。

Ⅷ SqlServer高版本数据备份还原到低版本

最近遇见一个问题:
想要将Sqlserver高版本备份的数据还原到低版本SqlServer上去,但是这在SqlServer中是没法直接还原数据库的,所以经过一系列的请教总结出来一下可用方法。
首先、你得在电脑上装有你将要操作的高版本以及低版本的SqlServer或者你能够连上SqlServer高版本所在的数据库(便于后面拷贝数据),
第二步、打开高版本数据库中你需要备份的数据库,将你备份的数据库相关的登录名或者用户删除。右键数据库->任务->生成脚本。在生成脚本的“选择对象”步骤选择“编写整个数据库及所有数据库对象的脚本选项”。在生成脚本的“设置脚本编写选项”的高级中选项中设置“编写USE
DATABASE
脚本”和“架构限定对象名称”选项为False并将“服务器版脚本”选择为你的低版本的数据库的版本。生成脚本。
第三步、在你低版本的数据库中新建数据库(名称随便),打开Sql脚本。将脚本中所有关于原数据库名称的操作全部删除,将数据库从第一个alter操作分成两部分,对新建数据库执行第一部分建表操作。
第四步、右键新建的数据库->任务->导入数据,将数据来源设置为高版本的数据库,目标设置成当前数据库。然后选择复制一个或多个图表。选择所有的数据表,然后在“编辑映射”将”启用标识插入“选上。导入数据
第五步、最后再执行前面分割的第二部分Sql脚本,为数据库建索引!
Ok.到此高版本SqlServer数据库在低版本SqlServer中恢复成功
分享第二个案例:
想要将Sqlserver2014高版本备份的数据还原到低版本SqlServer2008R2上去,但是这在SqlServer中是没法直接还原数据库的,通过以下方法可以顺利还原。
通过高版本生成sql脚本在低版本执行,并且数据也能保留。
步骤:任务—》生成脚本—》
下一步-》高级,选择数据库版本和编写脚本数据类型为架构和数据,可以保留数据。
继续下一步完成。
最后在低版本的sql数据库中:
先新建脚本中的数据库,再实行sql生成表结构和数据。
完美还原成功!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。