这是情况。
我在 SQL 服务器 Server1 上有一个数据库 DB1。
我将 DB1 备份到 db1.bak,然后尝试使用不同的名称 DB2 将 DB1.bak 恢复回 Server1。
我正在使用 C# 来完成这项工作,但它失败了。如果我不将 DB1.bak 恢复到具有不同名称且存在原始数据库的同一个 sql-server,则恢复将成功。
我还可以使用 Microsoft SQL Server Management Studio 成功恢复。这是从我的 C# 程序生成的 SQL。
SET @RestoreSQL = '
RESTORE DATABASE [DB2] FROM DISK = N''e:\Temp\DB1.bak'' WITH FILE = 1,
MOVE N''CtrlSys'' TO N''E:\Program Files\Microsoft SQL Server\MSSQL11.LATIN1_2012\MSSQL\DATA\DB2Sys.mdf'',
MOVE N''CtrlData'' TO N''E:\Program Files\Microsoft SQL Server\MSSQL11.LATIN1_2012\MSSQL\DATA\DB2Data.ndf'',
MOVE N''CtrlIx'' TO N''E:\Program Files\Microsoft SQL Server\MSSQL11.LATIN1_2012\MSSQL\DATA\DB2Ix.ndf'',
MOVE N''CtrlLog'' TO N''E:\Program Files\Microsoft SQL Server\MSSQL11.LATIN1_2012\MSSQL\DATA\DB2Log.ldf'',
NOUNLOAD, REPLACE, STATS = 10'
exec (@RestoreSQL)
这是错误:
Msg 3257, Level 16, State 1, Line 2
There is insufficient free space on disk volume 'E:\' to create the database.
The database requires 86240788480 additional free bytes, while only 83155132416 bytes are available.
Msg 3119, Level 16, State 4, Line 2
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally