在 sql server 2008 上运行 sql server 2000 备份文件

在 sql server 2008 上运行 sql server 2000 备份文件

我将 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 任务以在 ETL 之前完成,将所有外键约束设置为“WITH NOCHECK”(5)添加执行 SQL 任务以在 ETL 之后完成,将所有外键约束设置为“WITH CHECK CHECK”

从步骤 (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)

相关内容