這是情況。無法將bak文件恢復到SqlServer,但出現錯誤'磁盤捲上沒有足夠的可用空間...',上面有足夠的空間
我有SQL Server Server1上的數據庫DB1。
我將DB1備份到db1.bak,然後嘗試使用不同的名稱DB2將DB1.bak恢復到Server1。
我使用C#來完成這項工作,但失敗了。如果我不將DB1.bak恢復到具有不同名稱並且存在orignal數據庫的同一個sql服務器,則恢復將成功。
我也可以使用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
除了我用C#生成整個SQL然後執行它。有沒有更好的方法來做到這一點?我正在使用SQL Server 2012.謝謝! – user1076879
你是怎麼確定「它有足夠的空間」的。錯誤信息清楚地表明沒有。你在爭論'86240788480'還是'83155132416'? –
請注意,可以壓縮「bak」文件。然後釋放至少3085656064個字節。 –