[英]Copy SQL Server Express Database to Another Computer
我明天正在升級客戶端Access應用程序的后端,需要准備好針對此客戶端的特定問題的計划。 老板需要能夠定期(通常是每月)將數據文件從SQL Server的辦公室帶走,並對數據進行統計分析。
我已經研究了將整個SQL Server數據庫從服務器復制到本地SQL Express的最簡單方法 ,並且那里的解決方案在這種情況下不起作用,因為:
不能使用一次性解決方案(數據庫發布向導),因為這需要是可編寫腳本的。
不能使用依賴於聯網的兩台計算機的任何方法,因為這不是一個選項 - 數據必須通過USB拇指驅動器傳輸(因此,沒有復制)。
不能使用任何依賴於從服務器控制台或工作站運行SQL Server管理工具進行備份的方法。
無法直接連接到SQL Server數據庫進行分析,因為數據必須可移植到其他位置。
我認為我需要的是調用創建備份文件的腳本,然后將結果復制到USB驅動器的某種方法。 然后我需要第二個腳本從USB驅動器復制備份文件並將其還原到另一個SQL Server。
傳輸的數據是只讀的(或者,所做的任何更改都不需要返回主服務器),並且不會在第二個位置更新數據。 它目前用一個普通的舊批處理文件編寫腳本來復制后端MDB文件,我需要一些對用戶來說簡單的東西。
它不能依賴於Powershell(SQL Server Management Studio),因為我不希望它必須安裝在用戶運行腳本的計算機上(有六個工作站,腳本需要可以運行,我不想在所有這些上安裝一些東西)。
我將設置備份代理以每晚創建備份,因此我可以復制該文件,而無需在復制之前啟動備份。 因此,我可能只需要在目標計算機上編寫恢復腳本。
思想,建議,指針?
你絕對應該能夠創造類似的東西。
一部分是作為.sql
腳本的T-SQL CREATE BACKUP
腳本,並使用sqlcmd
命令行工具從標准Windows批處理( *.bat
)或命令( *.cmd
)文件執行該腳本。
那將是這樣的:
backup.sql
BACKUP DATABASE YourDatabase
TO DISK = 'Z:\Backup\YourDatabase.bak'
WITH FORMAT;
第二部分是帶有T-SQL RESTORE
腳本的.sql文件,基本上從磁盤上的給定位置讀取數據並將其恢復到那里的SQL Server實例。
restore.sql
RESTORE DATABASE YourDatabase
FROM AdventureWorks2008R2Backups
WITH
MOVE 'YourDatabase_Data' TO 'C:\MSSQL\Data\YourDatabase.mdf',
MOVE 'YourDatabase_Log' TO 'C:\MSSQL\Data\YourDatabase_Log.ldf';
GO
當然,您需要根據自己的實際要求調整這些名稱和路徑 - 但這應該只是為您提供如何開始這項工作的提示。
要使用sqlcmd
執行其中一個.sql腳本,您需要以下內容:
sqlcmd -S (name of server) -U (login) -P (password) -I (name of script file)
例如
sqlcmd -S (local) -U someuser -P top$secret -I backup.sql
資源:
我有同樣的問題,在生產(服務器)和測試開發(本地在另一個位置)之間傳輸數據庫,並將完成的數據庫傳輸到托管服務器。
事實證明,我可以自己運輸.MDF。
我一直這樣做; 完美運行 - 省去了運輸大型.ldf的麻煩。 (我經常使用dropbox.com而不是拇指驅動器,並首先用PKZIP / SecureZip加密文件。)
我不確定如果你在服務器啟動的情況下復制MDF會發生什么,雖然我沒有在復制之前停止它。 我不確定如何使這個腳本化 - 附加可以編寫腳本,但我不確定在繼續之前刪除.LDF。
您可以編寫服務器腳本以生成數據庫的快照副本,然后傳輸該MDF,因為它知道它沒有被更新。
另一個想法 - 寫一個程序將所有記錄插入到SQL-Server緊湊版文件中並傳輸它? 我沒試過,但是讀了一下。
只是一個想法,但如果他現在帶着一個MDB文件的副本,其中包含所有數據,那么為什么不繼續這樣做。 您可以通過查詢每個表來訪問所有內容。
如果您使用鏈接的表格“tblFoo_LINKED”和名為“tblFoo”的本地表設置“報告”MDB,那么您可以運行一些VBA代碼,這些代碼將循環遍歷所有表並執行類似的操作
INSERT INTO tblFoo SELECT * FROM tblFoo_LINKED
SQL服務器備份恢復仍然是我想要的選擇,但只是提供可能適合您需求的不同內容
為什么不繼續復制整個數據庫文件? 這看起來像一個足夠小的操作,可以暫時停止:您可以縮小數據庫,分離並直接復制文件。 在目標系統上,您可以在連接字符串中按文件名附加SQLExpress DB 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.