2017-05-19 17 views
0

データベースサーバに.bakファイルの束がありますが、これを実行するストアドプロシージャを作成しました(現在マスタ)。私のストアドプロシージャを実行すると、データがほぼに上書きされているようですが、が含まれている最新データがありません。.bakファイルにが含まれています。ストアドプロシージャを使用して.bakファイルを復元するときの問題

.bakを手動で復元すると、ストアドプロシージャでデータが失われていますが、すべてのデータが失われています。私はそれを忘れていますか?それがなければ私はいくつかの他のエラーが発生します。

-- Insert statements for procedure here 
ALTER DATABASE dbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

RESTORE Database dbName 
FROM DISK = N'C:\Backups\Databases\dbName.bak' 
WITH REPLACE, 
MOVE 'dbName' TO N'C:\Backups\Databases\DATA\dbName.mdf', 
MOVE 'dbName_log' TO N'C:\Backups\Databases\DATA\dbName.ldf', 
NOUNLOAD, STATS = 5 

ALTER DATABASE dbName 
    SET MULTI_USER WITH ROLLBACK IMMEDIATE 

私はSQL Serverでうまくいかず、私の問題を解決する方法についての指導者は誰ですか?

ソリューション:4に設定する、FILE = nを設定するには、私はそれを指定していなかった、それは私が信じる1であることをデフォルトで想定さ(最新のバックアップは)

+0

のようにしてみてください任意のファイルグラムはありますルーピングはあなたのデータベースを有効にしますか? –

+0

'WITH REPLACE'キーワードを使用したときに発生したエラーを教えてください。 – Hybris95

+0

バックアップテールログで問題が発生しました最近の状態で私の質問が更新されました – symon

答えて

1

この

USE [master] 
    ALTER DATABASE [AdventureWorks2012] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
    RESTORE DATABASE [AdventureWorks2012_Temp] 
    FROM DISK = N'D:\Backup\AdventureWorks2012.bak' 
    WITH FILE = 1, 
    MOVE N'AdventureWorks2012_Data' TO N'D:\Backup\AdventureWorks\AdventureWorks2012_1.mdf', 
    MOVE N'AdventureWorks2012_Log' TO N'D:\Backup\AdventureWorks\AdventureWorks2012_1_Log.ldf', 
    NOUNLOAD, STATS = 5 
    GO 
    ALTER DATABASE [AdventureWorks2012] SET MULTI_USER WITH ROLLBACK IMMEDIATE 
+0

これを試しましたが、私のファイルが正常に機能するように見えますが、SPがリストアを呼び出すと、まだデータがありません。私が手動でSSMSのGUIを使って.bakを復元すると、データは存在します(両方のインスタンスで同じ.bakファイル)。他のアイデアはありますか?同じサーバー上の別のSQLインスタンスからこの.bakファイルを取得しました – symon

+0

問題はFILE = 1でした。私の.bakファイルには複数のバックアップがあるため、FILE = 4が必要でした。最初は非常に古いものでした#4と比較して – symon

-1

はこのよう

RESTORE DATABASE ReportServerSplitCopy FROM 
DISK = 'D:\DBBackups\ReportServer\ReportServer_Split1.bak' 
,DISK = 'D:\DBBackups\ReportServer\ReportServer_Split2.bak' 
,DISK = 'D:\DBBackups\ReportServer\ReportServer_Split3.bak' 
WITH REPLACE , 
MOVE 'ReportServer' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER11\MSSQL\DATA\ReportServerSplitCopy.mdf', 
MOVE 'ReportServer_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER11\MSSQL\DATA\ReportServerSplitCopy_log.ldf' 
GO 
を試してみて、私の問題を解決しましたあなたが特定のフォルダloactionにして任意のファイル群を移動されていないクエリで
関連する問題