我使用T-SQL成功地将早期版本的备份恢复到MS SQL 2017上。
但是,在还原期间,数据库将升级到当前版本。
这是一个问题,因为我希望修改数据库,然后进行备份,然后将其传输并恢复到使用相同早期版本的MS SQL的另一个系统。
是否可以在数据库升级的情况下运行RESTORE?
一直在查看T-SQL文档而未发现此内容。
我使用的T-SQL代码是:
USE master
GO
ALTER DATABASE Polly SET SINGLE_USER
with ROLLBACK IMMEDIATE
GO
RESTORE DATABASE Polly FROM DISK = 'C:\data\Polly.bak';
GO
USE Polly
DELETE FROM SytLog;
GO
ALTER DATABASE Polly SET MULTI_USER
GO
如果有人对上面有一般改进,我很乐意提出建议。
当上述运行时,我得到:数据库'Polly'运行从版本782到版本801的升级步骤。...数据库'Polly'运行从版本868到版本869的升级步骤。
希望看到没有升级步骤,但只有数据库仍然可用。
当上述运行时,我得到:数据库'Polly'运行从版本782到版本801的升级步骤。...数据库'Polly'运行从版本868到版本869的升级步骤。
希望看到没有升级步骤,但只有数据库仍然可用。
这是不可能的。 SQL Server
的每个版本都有data
和log files
结构,服务器版本之间有所不同。如果您从较低版本的db文件restore
或attach
数据库单向更新,以具有当前版本的SQL Server
所需的结构。
不可能不升级,因为当前版本的服务器需要db文件的新结构。
围绕compatibility level
/ read_only property
的所有猜测都没有任何帮助,当前的服务器将永远不会运行不是所需结构的文件。
在readonly
数据库的情况下,其文件将被升级,但数据库将保持readonly
。
Compatibility level
与database version
(db文件的版本)完全无关。它告诉服务器应该使用什么版本的query optimizer
,仍然可以解析遗留的syntax
等等。
如果将SQL Server 2005(9.x)或更高版本的数据库还原到SQL Server 2017,则会自动升级数据库。
虽然我会在绝望的情况下尝试创建只读数据库并恢复它。
但这不是供应商直接支持的黑魔法。
不,这是不可能的。将数据库附加到较新版本的SQL Server后,您无法将其移回旧版本。在这种情况下,唯一的选择是导出/导入数据。如果您需要修改数据库并将其移回旧服务器,则需要安装具有相同旧版本的服务器并在那里进行恢复!
兼容性级别很重要。即使需要更改数据库的兼容级别,在某些情况下也无法简单地还原备份。
将在SQL Server 2008 R2上创建的数据库备份还原到SQL Server 2012实例的过程非常顺利,但如果尝试在SQL Server 2012上还原SQL Server 2000备份,则无法直接执行此操作。