可以在不更新的情况下将旧版本 MS-SQL 数据库还原到 SQL 服务器 2017 吗?
Possible to RESTORE older version MS-SQL database onto SQL server 2017 without it updating?
我每天使用 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
如果有人对上述内容有总体改进,我很乐意提出建议。
当上面的 运行s 我得到:
数据库 'Polly' 运行正在执行从版本 782 到版本 801 的升级步骤。
...
数据库 'Polly' 运行正在执行从版本 868 到版本 869 的升级步骤。
希望看到没有升级步骤,但前提是数据库仍然可用。
If you restore a SQL Server 2005 (9.x) or higher database to SQL Server 2017, the database is automatically upgraded.
虽然我会在迫切需要创建只读数据库并恢复它的情况下尝试。
但这是供应商不直接支持的黑魔法。
不,这不可能。一旦数据库连接到 SQL 服务器的较新版本,您就无法将其移回旧版本。在这种情况下,唯一的选择是 export/import 数据。如果您需要修改数据库并将其移回旧服务器,则需要安装具有相同旧版本的服务器并在那里进行恢复!
兼容性级别很重要。
即使需要更改数据库的兼容级别,在某些情况下也无法简单地恢复备份。
Restoring a database backup created on a SQL Server 2008
R2 to a SQL Server 2012 instance goes smoothly, but if a SQL Server
2000 backup is tried to be restored on a SQL Server 2012 you cannot
directly do it.
When the above runs I get: Database 'Polly' running the upgrade step
from version 782 to version 801. ... Database 'Polly' running the
upgrade step from version 868 to version 869.
Would like to see no upgrade steps, but only if database still usable.
这是不可能的。 SQL Server
的每个版本都有其 data
和 log files
结构,这在服务器版本之间是不同的。如果您从较低版本的 db 文件中 restore
或 attach
数据库进行单向更新,以具有当前版本 SQL Server
需要的结构。
不升级是不可能的,因为当前版本的服务器需要db文件的新结构。
所有关于 compatibility level
/ read_only property
的猜测都无济于事,当前服务器永远不会 运行 使用不符合其所需结构的文件。
对于 readonly
数据库,其文件将升级,但数据库将保持 readonly
。
Compatibility level
与 database version
(数据库文件的版本)完全无关。它只是告诉服务器应该使用哪个版本的 query optimizer
,仍然可以解析哪些遗留 syntax
,等等
我每天使用 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
如果有人对上述内容有总体改进,我很乐意提出建议。
当上面的 运行s 我得到: 数据库 'Polly' 运行正在执行从版本 782 到版本 801 的升级步骤。 ... 数据库 'Polly' 运行正在执行从版本 868 到版本 869 的升级步骤。
希望看到没有升级步骤,但前提是数据库仍然可用。
If you restore a SQL Server 2005 (9.x) or higher database to SQL Server 2017, the database is automatically upgraded.
虽然我会在迫切需要创建只读数据库并恢复它的情况下尝试。
但这是供应商不直接支持的黑魔法。
不,这不可能。一旦数据库连接到 SQL 服务器的较新版本,您就无法将其移回旧版本。在这种情况下,唯一的选择是 export/import 数据。如果您需要修改数据库并将其移回旧服务器,则需要安装具有相同旧版本的服务器并在那里进行恢复!
兼容性级别很重要。 即使需要更改数据库的兼容级别,在某些情况下也无法简单地恢复备份。
Restoring a database backup created on a SQL Server 2008 R2 to a SQL Server 2012 instance goes smoothly, but if a SQL Server 2000 backup is tried to be restored on a SQL Server 2012 you cannot directly do it.
When the above runs I get: Database 'Polly' running the upgrade step from version 782 to version 801. ... Database 'Polly' running the upgrade step from version 868 to version 869.
Would like to see no upgrade steps, but only if database still usable.
这是不可能的。 SQL Server
的每个版本都有其 data
和 log files
结构,这在服务器版本之间是不同的。如果您从较低版本的 db 文件中 restore
或 attach
数据库进行单向更新,以具有当前版本 SQL Server
需要的结构。
不升级是不可能的,因为当前版本的服务器需要db文件的新结构。
所有关于 compatibility level
/ read_only property
的猜测都无济于事,当前服务器永远不会 运行 使用不符合其所需结构的文件。
对于 readonly
数据库,其文件将升级,但数据库将保持 readonly
。
Compatibility level
与 database version
(数据库文件的版本)完全无关。它只是告诉服务器应该使用哪个版本的 query optimizer
,仍然可以解析哪些遗留 syntax
,等等