2012-08-25 78 views
105

我有一個啓用了文件流的SQL Server 2012數據庫。然而,當我備份,並嘗試恢復在另一個SQL Server 2012實例(另一臺計算機上),我只是得到這個消息:「沒有選擇要恢復的備份集」SQL Server 2012

No backupset selected to be restored.

甚至沒有更多的解釋一行。這裏有什麼問題?

沒有文件流的其他數據庫都可以,並且可以成功恢復。它與文件流有關嗎?我應該安裝一個修補程序或類似的東西。

+0

尚未解決。似乎SQL Server配置有問題。我認爲事情應該比這更容易。 –

+1

您能否提供您用於嘗試還原的T-SQL? –

+3

那麼,我正在使用SSMS的GUI。 –

回答

129

我有這個問題,事實證明,我試圖恢復到錯誤版本的SQL。如果您想對正在發生的事情的更多信息,請嘗試使用下面的SQL數據庫恢復:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak' 

這應該給你,你需要調試此錯誤消息。

+0

好點,但我們使用的是相同的版本。 –

+0

當您使用上面的SQL嘗試恢復時,會得到什麼錯誤消息? – user489998

+0

似乎使用T-SQL腳本恢復數據庫可以完成這項工作。我認爲,因爲我們沒有備份文件流數據,UI無法處理它。 –

9

我以爲我不會傻到混淆版本 - 不過,我並沒有意識到,我的新服務器上,一個SQL Server 2005實例已經從名爲SQLEXPRESS誕生安裝。在嘗試將SSMS 2012中的SQL Server 2008 R2備份數據庫還原到SQLEXPRESS實例時,備份集列表爲空。

最終,我意識到,在服務器上SQLEXPRESS實例不是2012的實例,但2005年我在斷開和連接到實際 2012實例(SQLEXPRESS2012我的情況下命名),它(顯然)工作。

+0

好點,但我們沒有這個快遞版本。 –

+2

這表明我的問題正確。我收到了與原始海報相同的錯誤,但這是因爲我試圖從SQL Express 2012恢復備份到SQL Server 2008實例。可以理解的是,這不是可取的,不幸的是,錯誤不足以解決根本問題。 – LeastOne

+1

哇!我已經從網站安裝了太多的熱修復程序,但該錯誤並沒有消失。我看到了這個答案,並用Sql Server 2012實例登錄並試圖恢復,它工作!嗯謝謝:) –

47

我的問題最終成爲權限。我在開發機器上並通過Homegroup複製。不知何故,可能基於我將文件複製到的位置,權限被搞砸了,Management Studio無法讀取該文件。由於這是開發者,我只需給予bak文件Everyone權限,然後可以通過GUI成功恢復。

+0

這最終也爲我工作。我的用戶名可以擁有對該文件夾的權限,所以這樣做的唯一方法就是將組「Everyone」添加到該文件夾​​的權限。太令人沮喪了,但謝謝你節省我的時間! – hurleystylee

+3

在這種情況下完全缺少有用的錯誤消息。我的問題也由此解決了。 –

+0

Booya!要喜歡那些不會告訴你任何東西的通用錯誤。當然這是權限。當從不同域上的SQL服務器恢復時,發生在我身上。將.bak文件權限更改爲所有人。那之後工作很好。 – Prescient

4

對我來說,問題在於.BAK文件位於服務器上的加密文件夾中。即使擁有完整的管理權限,我也永遠無法讓SSMS讀取文件。將.BAK移到未加密的文件夾解決了我的問題。請注意,移動文件後,您可能也必須改變實際文件的屬性刪除加密的(點擊右鍵,屬性,高級,取消選中「加密內容以便保護數據」。

5

很抱歉,但我只是註冊了,並能't加上評論,所以只是複製泰勒福賽斯的答案在這裏,這正是我的工作。

「我的問題最終成爲權限,我在開發機器上,並通過家庭組複製。在那裏我複製了文件,權限被搞砸了,Management Studio無法讀取文件,因爲這是開發者,我只是給了bak文件Everyone權限,然後可以通過GUI成功恢復。「Tyler Forsythe

爲了說明問題,我正在將備份從2008年的實例恢復到2012年不同的機器(produit vs local dev)。備份是一個自動備份,我不需要手動創建它,以便此過程正常工作。只需更改權限(每個人對於本地開發機器來說都是最簡單的),SSMS現在可以正確讀取備份文件並恢復到本地開發機器。

6

我的問題是,我的用戶是在內建管理員組中,沒有用戶在SQL Server上具有系統管理員角色。 我剛剛以管理員身份啓動Management Studio。這樣可以恢復數據庫。

4

僅供參考:我發現恢復時,我需要使用相同的(SQL用戶)憑據登錄到SSMS。我第一次嘗試使用Windows身份驗證帳戶進行還原。

1

此故障的另一個潛在原因似乎是Google Drive。 Google雲端硬盤正在壓縮bak文件或其他內容,因此如果您想通過Google雲端硬盤傳輸數據庫備份,則必須先將其壓縮。

2

對我來說,這是因爲備份文件仍然被另一個進程打開。以下是事件日誌:

BackupDiskFile :: OpenMedia:備份設備'X:\ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak'無法打開。操作系統錯誤32(進程無法訪問該文件,因爲它正在被另一個進程使用。)。

只需關閉並重新打開SQL Server管理套件解決它(所以顯然這是ssms.exe是有手柄。)

9

運行SQL Server Management Studio中作爲管理員(右鍵單擊>運行方式管理員),然後嘗試恢復。

+0

感覺就像這裏的皇室紅寶石一樣......已經擺弄太久了!謝謝,這對我來說是個訣竅。 – JustaDaKaje

3

我與SQL Server 2014有同樣的問題(管理工作室無法看到備份文件所在的文件夾,試圖找到它進行恢復操作時)。 This thread舉行解決我的問題的答案。 Quote:

The SQL Server service account can be found by Start->Control Panel->Administrative Tools->Services. Double-click on the SQL Server service->Log On tab. You'll either be using the "Local System account" or "This account" to define a specific account. If you are using the Local System account, you won't be able to reference backups that are not local to the server. If, instead, you have defined the account to use, this is the account that needs to have access to the backup file location. Your ability to access the backups using your personal logon is irrelevant; it is the SQL Server account that is used, even though you are initiating the backup. Your IT people should be able to determine what rights are granted to each account.

希望可以幫助別人。

+0

感謝您引用此處的內容,更容易使用該信息,而無需離開此頁面。 – condiosluzverde

3

在我的情況下(新的SQL Server安裝,新創建的用戶)我的用戶根本沒有必要的權限。我以sa的身份登錄到Management Studio,然後轉到Security/Logins,右鍵單擊我的用戶名Properties,然後在Server Roles部分查看sysadmin

20

當運行:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak' 

它給了我下面的錯誤:

The media family on device 'C:\NorthwindDB.bak' is incorrectly formed. SQL Server cannot process this media family. RESTORE HEADERONLY is terminating abnormally. (Microsoft SQL Server, Error: 3241) Blockquote

原來你不能把一個數據庫從更高版本的SQL到一個較低的一個,即使兼容級別在源數據庫和目標數據庫上都相同。 要檢查SQL版本上運行:

Select @@Version 

要看到其中的差別,只是你 SQL服務器上創建一個數據庫,並嘗試做從您的備份文件恢復,當你做到這一點絲毫SSMS,一旦你選擇的備份文件,它會顯示一些關於它的信息作爲opossed當您從較低版本的服務器,這將只是說「沒有選擇的備份集要恢復」 enter image description here

所以,如果你仍然需要打開它將您的數據移動到較低版本的SQL,然後檢查This

+0

所以如果我從機器與SQL Server 2014企業的數據庫備份 - 可以恢復在SQL Server 2014 Express? – chester89

+0

@ chester89我認爲這取決於你在數據庫中有什麼樣的功能。還有那種備份。快速版本無法識別壓縮備份。另外,如果企業版使用企業特有的東西,免費版(express)將無法識別它。但是,如果你有標準的東西,理論上應該認識到。 –

+0

@JuanAcosta是的,我把它放在一起。在我的情況下,沒有使用特定於企業的功能,所以我沒有任何問題地恢復了備份 – chester89

5

在我的情況下,它是權限和事實,我使用「恢復文件和文件組...」,而不是簡單地「恢復數據庫...」。

這就是區別。

enter image description here

0

使用SQL Server 2012 Express。

我的錯誤(從SQL管理器 - 還原數據庫對話框):

No backupset selected to be restored

此外,沒有在列表中選擇備份集。

問題是我將5個備份文件中的1個移動到了SQL Server服務登錄用戶沒有權限的文件夾 - 我嘗試添加該用戶,但無法獲得NT Service \ MSSQL $ SQLEXPRESS用戶加入安全列表。

我在服務用戶的Documents文件夾下移動了文件,這使它能夠讀取我選擇的所有文件 - 當時是4個 - 並且錯誤更改爲「media set missing」 - 然後我環顧四周另一個備份文件,當我補充說我能夠恢復。

這個問題的答案幫助我找到了正確的地方併爲解決方案工作。

0

對我來說,這是一個權限問題。我使用本地用戶帳戶安裝SQL服務器,然後加入我的公司域。後來,我嘗試使用我的域帳戶恢復數據庫,該帳戶沒有恢復SQL Server數據庫所需的權限。您需要修復您的域帳戶的權限,併爲您擁有的SQL Server實例授予系統管理員權限。

0

對我來說,它是一個用戶prevelege問題。 我用sa用戶登錄並且工作正常。

0

即使我在同一臺機器上備份和恢復,我也收到了相同的錯誤消息。

問題出在這裏:備份時,我在目標框中有2個項目。

所以修復方法是:確保'目標'框中只有1個項目。如果有的話,刪除所有其他人。