我知道你不能(至少不容易)在SQL Server 2008上恢复SQL Server 2012备份.但是,从SQL Server 2014到SQL Server 2012,它是如何工作的呢?

在数据库级别,有一个属性可以将兼容模式调整为任何其他SQL Server版本.

这有什么帮助或作用?它会从2014年开始禁止这些功能吗?

老实说,我已经try 过恢复备份,但2012无法识别数据文件,因此我无法单击ok Button开始恢复过程.

我错过了一些重要的 Select 吗?

推荐答案

您可以这样做—您无法从SQL Server newer version连接/分离或备份/恢复数据库到older version—内部文件 struct 差异太大,无法支持向后兼容.这在SQL Server 2014中仍然是正确的——您可以在除另一个2014 box(或newer)之外的任何设备上恢复2014年的备份.

你可以通过

  • 在所有计算机上使用相同版本的SQL Server,这样就可以轻松地在实例之间备份/恢复数据库

  • 否则,您可以在SQL Server Management Studio(Tasks > Generate Scripts)中或使用第三方工具为 struct (表、视图、存储过程等)和内容(表中包含的实际数据)创建数据库脚本

  • 或者,您可以使用第三方工具,如Red Gate的SQL CompareSQL Data Compare,在源和目标之间进行"差异化",根据这些差异生成更新脚本,然后在目标平台上执行这些脚本;这适用于不同的SQL Server版本.

compatibility mode设置只控制您可以使用哪些T-SQL功能,这有助于防止意外使用其他服务器上不可用的新功能.但它确实改变了这.mdf个文件的内部文件格式—这是针对该特定问题的解决方案—对于在旧实例上从较新版本的SQL Server恢复备份,没有解决方案.

Sql相关问答推荐

Oracle SQL中的累计总数

在SQL Server中使用LEFT连接包含特定记录

如何将资源密集型自连接转换为更快的查询?

如何在SQL Server中列出从当前月份开始的过go 10年中的月份

解析键-值对,根据值 Select ,并使用SQL创建新列

PostgreSQL使用SQL子查询在时间间隔内 Select 数据

PostgreSQL抽奖查询

Pgsql-返回包含多行数据的行

根据时间、状态和相关行在PostgreSQL中的存在来删除行

通过对象分离实现原子性

需要使用SQLite查询进行一些奇怪的时间转换

如何使用SQL生成数据的滚动3天总和

Spark / Hive:如何获取列中正值的百分比?

用户定义的标量值函数是否仍然会阻止并行性?

如何在第二个 INSERT 中使用第一个 INSERT 自动生成的 ID

创建定时器以更新Gridview

使用ALTER TABLE无法删除列

Postgres 条件求和函数

如何在一个存储过程中创建全局临时表,并在另一个存储过程中使用它

连接表时避免重复