bingo61
Goto Top

Datenbank Kopie SQL Express

Hallo in die Runde,

Problem :

eine Datenbank Warenwirtschaft, auf einen 2003 Server mit SQL Express Version 8.000, soll auf einen neuen Windows 2022 Std ebenso SQL Express aktuelle Version 15.00 umziehen . Beides VM auf unterschiedlichen Exsi Host.
Unterschiedlich weil, ein Blech wegkommt und neues hingestellt wurde
SQL Server rentiert sich nicht, da DB nur 3 GB hat.
Bisher:
Datenbank gesichert auf Server old, dann über Netzwerk auf Server neu in Ordner SQL Server Backup Ordner kopiert.
Das Sichern der DB auf alt funktioniert auch das restore im Test, aber Wiederherstellen auf neu schlägt fehl.
Weil alte Version SQL und neue inkompatibel sind.

Was kann man da als Lösung nutzen?
Da gibts schon Beitrag aber , das Problem gelöst schein da nicht zu sein

SQL-2017: Datei oder Assembly "Microsoft.SqlServer.SmoExtended, Version 11" nicht gefunden

Danke schon mal.
sql server

Content-Key: 4874185916

Url: https://administrator.de/contentid/4874185916

Printed on: July 27, 2024 at 12:07 o'clock

Mitglied: 141986
141986 Dec 06, 2022 at 13:21:09 (UTC)
Goto Top
Moin,

musst wohl einen(mehrere) Zwischenschritt(e) bei der Migration unternehmen.

MS sagt das hier..

SQL Server 2022 (16.x) supports upgrade from the following versions of SQL Server:

SQL Server 2012 (11.x) SP4 or later
SQL Server 2014 (12.x) SP3 or later
SQL Server 2016 (13.x) SP3 or later
SQL Server 2017 (14.x)
SQL Server 2019 (15.x)

und der 2012er lässt sich wie folgt migrieren:

- Step 1: Make a first migration from SQL 2000 to SQL 2008 for instance. You need to be SQL 2000 SP4, then follow this step : Migration SQL Server 2000 to SQL Server 2008

- Step 2: Make a second migration from SQL Server 2008 to 2012.

Grüße
Member: Bingo61
Bingo61 Dec 06, 2022 at 13:44:00 (UTC)
Goto Top
Servus,
Danke face-smile habs befürchtet.
Krux ist, der Software Entwickler der WW, sitzt in Kuala Lumpur hat aber München als Firmenadresse.
Der Typ hat keinen Bock, seinen Kunden seine Software wieder arbeitsfähig stellen.
Mitglied: 141986
Solution 141986 Dec 06, 2022 updated at 13:47:36 (UTC)
Goto Top
Hey,

ich habe mal etwas mit GPT rumgefummelt, der würde folgendes vorschlagen:

how to migrate sql 2003 to sql 2022?

To migrate a database from SQL Server 2003 to SQL Server 2022, you can use the following steps:

Backup the database from the SQL Server 2003 instance using the BACKUP DATABASE statement.
Copy the database backup file to the server that is running SQL Server 2022.
Restore the database on the SQL Server 2022 instance using the RESTORE DATABASE statement.
Here is an example of the BACKUP DATABASE and RESTORE DATABASE statements that you can use:

-- Backup the database on the SQL Server 2003 instance
BACKUP DATABASE MyDatabase
TO DISK = 'C:\MyDatabase.bak'  

-- Restore the database on the SQL Server 2022 instance
RESTORE DATABASE MyDatabase
FROM DISK = 'C:\MyDatabase.bak'  
WITH REPLACE;
After restoring the database, you may need to update the compatibility level of the database to match the version of SQL Server 2022. You can do this using the ALTER DATABASE statement.


ALTER DATABASE MyDatabase
SET COMPATIBILITY_LEVEL = 150;
It's also a good idea to run the DBCC CHECKDB statement on the migrated database to verify its integrity.  


DBCC CHECKDB ('MyDatabase')  
WITH NO_INFOMSGS;
Note: These steps assume that the source and target databases have the same collation settings. If the collation settings are different, you will need to use the WITH MOVE option in the RESTORE DATABASE statement to specify the new collation settings. You can also use the COLLATE clause in the ALTER DATABASE statement to change the collation of the database.

Das Ding ist der oberhammer! :D

VG

Würde mich ja interessieren, ob das so gehen würde. :D
Member: evgnbz
evgnbz Dec 06, 2022 updated at 13:52:22 (UTC)
Goto Top
worstcase -> tabellen inhalt in csv format exportieren und dann neu importieren
Member: wiesi200
wiesi200 Dec 06, 2022 updated at 15:14:16 (UTC)
Goto Top
Zitat von @Bingo61:

Servus,
Danke face-smile habs befürchtet.
Krux ist, der Software Entwickler der WW, sitzt in Kuala Lumpur hat aber München als Firmenadresse.
Der Typ hat keinen Bock, seinen Kunden seine Software wieder arbeitsfähig stellen.

Ja aber so aufwendig ist der Spaß doch nicht dass man den Entwickler braucht, sofern die Anwendung überhaupt mit einem neuen SQL klar kommt.
Auf einer Temp VM eine etwas älteren SQL einrichten da das Backup zurückspielen. Den "compatibility level" hoch setzen und noch mal ne runde drehen.

Übrigens der SQL Express hat nicht nur Nachteile bezüglich DB Größe sonder auch Geschwindigkeit.
Alternativ wäre auch das Import and Export Modul das jeder SQL Server besitzt ne Möglichkeit.
Der verbindet sich auf beide Server per ODBC und schiebt die Daten rüber.

Bei sowas muss man immer etwas "spielen"
Member: MadMax
Solution MadMax Dec 06, 2022 at 15:14:23 (UTC)
Goto Top
Moin,

den Import per Skript versuchen, wie es 0xFFFF vorschlägt, kann man zwar probieren, aber damit umgeht man ja nur die Bedienoberfläche vom Management Studio. Die Skripte, die nötig sind, die DB von SQL Server 2000 auf 2012 zu bringen, werden dann kaum ausgeführt werden.

Du wirst wohl die Schritte gehen müssen, erst auf SQL Server 2008 / 2008R2, dann 2012 - 2017 und anschließend auf 2022 zu gehen.

Allerdings frage ich mich auch, ob Eure DB auf so einer neuen Version überhaupt lauffähig ist. Das müßte Euch eigentlich der Entwickler beantworten, aber wenn der nicht greifbar ist ...

Gruß, Mad Max
Member: Bingo61
Bingo61 Dec 07, 2022 at 12:40:22 (UTC)
Goto Top
Entwickler hat sich gemeldet, mit Hinweis den 2003 erst auf eine 2008 SQL migriren dort dann in neuen SQL.
Nur der sbs ist noch 32 Bit ..
gemacht hab ich nun 2016 Std Server auf dem die 2008 SQL, dann mal gucken was mit DB passiert.
Ok, mach das Thema mal auf beendet.
Danke für die Tipps
Mitglied: 141986
141986 Dec 07, 2022 updated at 12:43:09 (UTC)
Goto Top
Im Prinzip genau das, was ich im ersten Post geschrieben hatte.

Wünsche Glück, dass alles rund läuft.

Dein Ernst? Die Lösung von MadMax kam später als die Meinige und dennoch ist das die Lösung?
Naja, ..
Grüße
Member: Bingo61
Bingo61 Dec 07, 2022 at 12:52:06 (UTC)
Goto Top
Sorry .hab das nur als Lösung genommen, weil ich den Beitrag beenden wollte. Lösung in dem Sinn ja das was mir der Entwickler mitgeteilt hatte, was an sich schon Wunder ist. Denn er hat eigentlich kein Lust auf Kontakte nach Deutschland.
Dann werte ich halt deine Lösung, wenn es dir so wichtig ist.
Member: Bingo61
Bingo61 Dec 08, 2022 at 09:00:07 (UTC)
Goto Top
0xFFF,
darf ich dich nochmals mit dem Thema belästigen?
Soweit hat der Backup und Restore Vorgang mit der DB des Warenwirtschaftssystem geklappt.
Lag einfach an der Version des SQL ist nun 2003 auf 2008 migiert, dann kommt nun von dort auf 2022.
Wo ich nun nicht weiterkomme ist, ich möchte die Master DB restore auf dem 2008 per restore. Denke die hat die Systemdaten der anderen db?
So nun geh eich auf restore, kommt Meldung geht nur in Single Modus. Gibt Sinn. Schalte ich den sql mit net stop / net start /m in Single modus , dann mit sqlsmd restore database master from disk = 'c:\downloads\master_db.bak' WITH Replace; kommt: 'Fehler bei der Anmeldung für den Benutzer 'xxxxxxxx\Administrator'. Ursache: Der Server befindet sich im Einzelbenutzermodus. Nur ein einziger Administrator kann zurzeit eine Verbindung herstellen.'
?? Ist da die Ursache das der Anmeldemodus mit Windows Anmeldung geschaltet ist, weil da die Dienste Systemusw auch anmelden?
Member: Uhli90
Uhli90 Dec 08, 2022 at 13:26:11 (UTC)
Goto Top
Also die Master beinhaltet Information über die Instanz. Diese sollte eigentlich nicht übernommen werden, da jede Instanz ihre eigene hat. Ein Programm sollte in diese Datenbank auch keine Informationen ablegen, egal wie alt die SQLServer-Version auch ist.
Member: MadMax
MadMax Dec 09, 2022 at 15:05:08 (UTC)
Goto Top
Hallo Bingo61,

Du solltest den SQL Server nochmal normal starten, also ohne Einzelbenutzermodus, und dann feststellen, wer da schneller ist mit der Anmeldung.

Starte das Management Studio, aber melde dich nicht an.
Öffne eine neue Abfrage (da mußt Du Dich anmelden) und führe folgenden Befehl aus:
select	*
from	sys.dm_exec_sessions s
	join sys.dm_exec_connections c on c.session_id = s.session_id
order by s.session_id
Da sind alle Verbindungen aufgeführt. Eine davon ist Deine, Deine SessionID findest Du rechts unten in der Statusleiste neben dem Benutzernamen in klammern, also z.B. "sa (60)", "sa" ist dann der Benutzername und Deine SessionID ist 60. (Oder Du stellst sie fest mit "select @@spid").

Alle anderen sollten da nicht sein. Du mußt schauen, was das für Verbindungen sind und mußt die unterbinden. Vielleicht ist der Spionagedienst vom SQL Server dabei (SQL Server CEIP service), den könntest Du dann deaktivieren. Eben je nachdem, welche Verbindungen da sind, mußt Du sehen, wie Du die los wirst.

Wenn Du alle identifiziert und eliminiert hast, kannst Du es nochmal probieren mit dem Einzelbenutzermodus.

Denk aber dran, falls irgendwelche Verbindungen gewollt sind, die hinterher wieder einzuschalten.

@Uhli90: Grundsätzlich hast Du natürlich recht, daß man dort keine Daten ablegen soll, aber Systemdaten, insbesondere Anmeldedaten, sind halt trotzdem dort.

Gruß, Mad Max