2010-02-10 107 views
1

我們有意將其Sql 2008數據發送給使用SQL 2000的其他客戶。現在很顯然,這目前沒有工作,所以我試圖創建一個「通用」備份過程,使我們可以在Server 2000上備份和恢復數據(因爲SQL2000是所有客戶或客戶中最不常見的部分)。現在,我們正在創造我們的備份這樣(C#):備份SQL 2008數據庫在SQL 2000上恢復.NET

Server server = new Server(GetServerConnection(serverName, userName, password)); 
Backup backup = new Backup(); 
backup.Action = BackupActionType.Database; 
backup.Database = GetDatabasePrefix() + databaseName; 
backup.Devices.AddDevice(fileName, DeviceType.File); 
backup.Initialize = true; 

backup.SqlBackup(server); 

我的第一個問題是,是否有「力」的備份運行的SQL 2000的任何方式,即使數據庫是SQL 2005或2008年?

此外,我們正考慮通過使用數據庫上的bcp過程來封裝和解包表並將它們壓縮在一起。在壓縮過程中,我會放入一個標題標誌以聲明它是「通用」備份。這看起來是否合理,還是有更簡單的方法呢?由於應用程序與服務器無關,因此所有的列和表都應該相同。謝謝您的幫助!

回答

5

如果僅移植數據,BCP或自定義SSIS包聽起來就像是最可能的可重用選項。您可能需要查看SSIS導入/導出嚮導,使用起來非常簡單,並且可以完成您想要的任務。

2

無法將備份從較新版本的SQL Server還原到較舊版本。

您可以生成SSMS從SSMS 2008 2000的SQL腳本:

  • 打開工具 - 服務器版>腳本
  • 設置「腳本 - >在SSMS選項2008
  • 進入到SQL Server對象資源管理器「到2000年
  • 右擊你的數據庫,選擇任務 - >生成腳本
  • 腳本數據庫中所有對象
  • 執行腳本的2000服務器上

然後服務器連接在一起,像複製數據:

insert ChefDb.dbo.MyTable from ChefServer.ChefDb.dbo.MyTable 

另外,可以考慮購買RedGate SQL Data Compare

+0

我很欣賞詳細的回覆,但我的主要目標是以編程方式使用此功能。我不能要求我們的客戶這樣做,我需要在我們的應用程序中提供手段。 – Kevin 2010-02-10 22:15:32