![](/img/trans.png)
[英]How do I connect to an older sql database using LocalDb in VS 2012?
[英]How do I copy SQL Server 2012 database to localdb instance?
我想將SQL Server 2012 Standard數據庫復制到我的localdb實例。 我試過向導抱怨localdb不是SQL Server 2005或更高版本的實例 。 我也進行了備份/恢復,但在我的localdb中恢復時出現以下錯誤...
運行這個......
RESTORE DATABASE CSODev
FROM DISK = 'C:\MyBckDir\CSODev.bak'
WITH MOVE 'CSOdev_Data' TO 'C:\Users\cblair\CSOdev_Data.mdf',
MOVE 'CSOdev_Log' TO 'C:\Users\cblair\CSOdev_Log.ldf',
REPLACE
錯誤消息我得到...
為數據庫'CSODev'處理8752頁,在文件1上處理'CSOdev_Data'文件。
處理了數據庫'CSODev'的5頁,文件1上的'CSOdev_Log'文件。消息1853,第16級,狀態1,第1行
無法找到邏輯數據庫文件“CSOdev_Log”。 指定文件的完整路徑。
消息3167,第16級,狀態1,第1行
RESTORE無法啟動數據庫'CSODev'。
Msg 3013,Level 16,State 1,Line 1
RESTORE DATABASE異常終止。
數據庫最終處於“恢復待定”模式。 它似乎與日志文件有問題。 我已經嘗試了2個不同的備份,以防一個被破壞。
對於localDB存在已知的限制 (實際上是一個真正的錯誤)。 每當數據庫文件位於不同的文件夾中時,它將無法使用MOVE進行任何RESTORE。
您必須在原始文件夾中恢復(無MOVE)。 如果需要假冒驅動器:/ path,請使用cmd工具,例如SUBST。
我有同樣的問題。 最終起作用的是:
最后一步發生的事情是SSDT執行了數據文件的升級,顯然是舊格式的。 完成后,數據庫開始工作沒有任何問題!
我有同樣的問題,經過一些在線研究之后,我遇到了一種巧妙的方式來讓它發揮作用(盡管非常hacky)。 基本上,你:
SqlLocalDb c tmp -s
)。 SqlCmd -E -S <localdb connection string> -Q "RESTORE DATABASE ..."
)。 SqlLocalDb p tmp
)。 SqlLocalDb d tmp
)。 SqlLocalDb c persistent -s
)。 SqlCmd -E -S <persistent connection string> -Q "Create Database <dbname> On (Filename = '<Mdf file location'), (Filename = '<Ldf Filename'>) For Attach"
。 希望它應該工作。 看到這里的原始想法。
編輯:添加了傑森布拉迪對創建命令的更正。
嘗試將數據庫編寫為模式和數據,然后在本地運行腳本。
RESTORE FILELISTONLY
FROM DISK = 'D:\SQLBackups\yourdatabase.BAK'
ALTER DATABASE yourdatabasename
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
RESTORE DATABASE yourdatabasename
FROM DISK = 'D:\SQLBackups\yourdatabase.BAK'
with replace,
move 'logical name from file stream' to
'C:\yourdatabase.mdf',
move 'logical name from file stream' to 'C:\Yourdatabase.ldf'
ALTER DATABASE Qatar_DB SET MULTI_USER
我有同樣的問題。 嘗試以管理員身份運行visual studio並嘗試以下命令
RESTORE DATABASE CSODev
FROM DISK = 'C:\MyBckDir\CSODev.bak'
WITH NORECOVERY, MOVE 'CSOdev_Data' TO 'C:\Users\cblair\CSOdev_Data.mdf',
MOVE 'CSOdev_Log' TO 'C:\Users\cblair\CSOdev_Log.ldf',
更新:這不起作用!
雖然上述語句不會產生任何錯誤並成功完成,但數據庫仍處於“PENDING RECOVERY”狀態,無法以任何方式訪問。 當我嘗試'RESTORE WITH RECOVER'將數據庫聯機時,我得到的錯誤與上面的問題相同。
所以在我的情況下,我最終將備份恢復到我已運行MSSQL 2008 R2的DEV服務器,然后選擇:任務 - >生成腳本 - >選擇對象到腳本和下一步 - >單擊“高級”按鈕 - >選擇“腳本的數據類型“:架構和數據。 現在針對本地db運行生成的腳本。
同樣的問題,謝謝你的幫助。 我的本地數據庫是MS SQL 2014.打開“SQL Server 2014 Management Studio”
它對我有用。 備份數據庫后,可以無錯誤地還原數據庫。 謝謝。
試試這些腳本(我個人測試過的冒險工具的例子):
RESTORE FILELISTONLY
FROM DISK = 'c:\temp\adv2012.bak'
這會將文件名顯示為:
AdventureWorks2012 C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQL2012RTM\MSSQL\DATA\AdventureWorks2012.mdf
AdventureWorks2012_log C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQL2012RTM\MSSQL\DATA\AdventureWorks2012_log.ldf
使用這些文件名來構建最終腳本,如下所示:
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'C:\temp\adv2012.bak'
WITH MOVE 'AdventureWorks2012' TO 'C:\cnom_WS\Local-Databases\AdventureWorks\AdventureWorks2012.mdf',
MOVE 'AdventureWorks2012_log' TO 'C:\cnom_WS\Local-Databases\AdventureWorks\AdventureWorks2012_log.ldf',
REPLACE;
順便說一句,我通過Visual Studio(SQL Server對象資源管理器)運行這些,但我強烈懷疑這可以在SSMS上輕松運行;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.