
Ich habe die BAK-Datei von SQL Server 2000 auf SQL Server 2008 wiederhergestellt.
--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
Es wurde gefragt, ob ich die Master-Datenbank verwenden soll. Als ich sie verwendet habe, konnte ich mein Backup laden, aber jetzt besteht das Problem darin, dass ich nur Tabellen mit Daten, aber keine gespeicherten Prozeduren sehen kann
Antwort1
Exportieren und importieren Sie die gespeicherten Prozeduren. Ich erinnere mich, dass ich die gleichen Probleme schon einmal hatte, aber sie scheinen von den neueren SQL-Servern behoben worden zu sein.
Um die Arbeit einfacher zu machen, würde ich das 2k8-Management mit 2000 SQL verbinden.
Antwort2
Wenn Sie immer noch nicht in der Lage sind, eine SQL Server 2000-Datenbanksicherung auf SQL Server 2008 wiederherzustellen UND eine Verbindung zur SQL Server 2000-Datenbank herstellen können, empfehle ich die Verwendung des in SQL Server 2008 verfügbaren Assistenten zum Generieren von SQL Server-Skripts.
In Ihrer Situation können Sie dieses Tool folgendermaßen verwenden: (1) Erstellen Sie ein Skript für alle Objekte (Tabellen, Prozeduren, Anmeldungen, Berechtigungen usw. – Sie haben die Kontrolle über die Auswahl) und führen Sie es sofort aus. (2) Erstellen Sie ein Skript für die Daten (ETL) als SSIS-Paket.
Nächste Schritte: (3) Öffnen Sie das SSIS-Datenpaket. (4) Fügen Sie eine oder mehrere SQL-Ausführungsaufgaben hinzu, die VOR dem ETL abgeschlossen werden sollen, wodurch alle Fremdschlüsseleinschränkungen auf „WITH NOCHECK“ gesetzt werden. (5) Fügen Sie eine oder mehrere SQL-Ausführungsaufgaben hinzu, die NACH dem ETL abgeschlossen werden sollen, wodurch alle Fremdschlüsseleinschränkungen auf „WITH CHECK CHECK“ gesetzt werden.
Ausgehend von der SQL Server 2008-Datenbank, die Sie in Schritt (1) erstellt haben, lautet der Code zum Generieren des TSQL für die Schritte (4) und (5):
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)