2009-11-23 8 views
0

我犯了一個錯誤,並且在主數據庫(醫院)上做了錯誤更新(對於tblPatientFile表中的大多數患者,血型未知) 我有一個日常備份數據庫(hospitalRapor)和數據真實爲今天之前的患者(這是40多萬條記錄)使用WHERE子句將備份數據庫表中的列複製到主數據庫

可以複製我的舊數據從這樣 [醫院]。[DBO]。[tblPatientFile] [bloodTypeField] = [hospitalRapor]。[dbo]。[tblPatientFile]。[bloodTypeField] where [hospital]。[dbo]。[tblPatientFile]。[patientId] = [hospitalRapor]。[dbo]。[tblPatientFile]。 [patientId]

我很煩人,我必須在這一天解決這個問題。謝謝你的幫助

回答

1

你沒有說一個數據庫服務器,所以我不能肯定這會工作,但我相信在MSSQL語法是:

UPDATE livefile 
SET livefile.bloodtypefield=oldfile.bloodtypefieild 
FROM [hospital].[dbo].[tblPatientFile] livefile 
INNER JOIN [hospitalRapor].[dbo].[tblPatientFile] oldfile on livefile.patientid=oldfile.patientid 

我強烈建議測試數據庫上運行第一確保它有你想要的結果。您當然需要一個可以訪問這兩個數據庫的用戶,並根據您是否定義了觸發器等來在400k行上運行可能需要很長時間。

0

我認爲你在同一臺服務器上恢復了數據庫,在這種情況下,假設所有以前的數據都是正確的,儘管你可以覆蓋自從之後創建的血型的任何更新你的錯誤。

我建議你在繼續之前還要備份你的'不正確的'數據庫,這樣可以糾正一個額外的錯誤 - 很容易解開,這樣你至少可以返回到最初的'錯誤'狀態,而不是複合問題。

+0

是的我從備份數據庫中獲取血型列表,並將其保存到excell文件 – Rapunzo 2009-11-23 13:35:48