
我將 sql server 2000 .bak 檔案還原到 sql server 2008
--RESTORE FILELISTONLY
--FROM DISK = 'D:\DBHarshal\full backup august 6.BAK'
--ALTER DATABASE EPICSms
--SET SINGLE_USER WITH
--ROLLBACK IMMEDIATE
RESTORE DATABASE EPICSms
FROM DISK = 'D:\DBHarshal\full backup august 6.BAK'
WITH MOVE 'EPICSms_Data' TO 'C:\EPICSms_Data.mdf',
MOVE 'EPICSms_Log' TO 'C:\EPICSms_Log.mdf'
,REPLACE
當我使用它時,它要求使用主資料庫,我能夠加載我的備份,但現在的問題是我只能看到包含資料的表,但看不到預存程序
答案1
匯出和匯入預存程序。我記得以前也遇到過同樣的問題,但似乎已被較新的 SQL 伺服器修復。
為了讓工作更簡單,我將 2k8 管理連接到 2000 sql。
答案2
如果您仍然無法將 SQL Server 2000 資料庫備份還原到 SQL Server 2008 並且能夠連線到 SQL Server 2000 資料庫,我建議使用 SQL Server 2008 中提供的「產生 SQL Server 腳本精靈」。
對於您的情況,您可以如下使用此工具:(1) 編寫所有物件(表格、流程、登入、權限等—您可以進行選擇性控制)的腳本並立即執行。 (2) 將資料(ETL)腳本化為SSIS套件。
後續步驟: (3) 開啟資料 SSIS 套件 (4) 新增執行 SQL 任務以在將所有外鍵約束設為「WITH NOCHECK」的 ETL 之前完成 (5) 新增執行 SQL 任務以在 ETL 之後完成將所有外鍵約束設定為“WITH CHECK CHECK”的ETL
從您在步驟 (1) 中建立的 SQL Server 2008 資料庫中,為步驟 (4) 和 (5) 產生 TSQL 的程式碼是:
SELECT
'ALTER TABLE [' + SCHEMA_NAME(schema_id) + '].[' + OBJECT_NAME(parent_object_id) + ']' + ' NOCHECK CONSTRAINT ' + OBJECT_NAME(OBJECT_ID) AS ddlNoCheck
,'ALTER TABLE [' + SCHEMA_NAME(schema_id) + '].[' + OBJECT_NAME(parent_object_id) + ']' + ' WITH CHECK CHECK CONSTRAINT ' + OBJECT_NAME(OBJECT_ID) AS ddlWithCheckCheck
FROM
sys.objects
WHERE
type_desc = 'FOREIGN_KEY_CONSTRAINT'
ORDER BY
SCHEMA_NAME(schema_id)
, OBJECT_NAME(parent_object_id)
, type_desc, OBJECT_NAME(OBJECT_ID)