Benutzer mit den meisten Antworten
SQL Server - Compatibility Level anpassen

Frage
-
Moin Moin,
besteht die Möglichkeit, das Compatibility level aller vorhandenen Datenbanken mittels Script etc., auf einmal anzuheben?
Mittels "ALTER DATABASE" und DB Name funktioniert das Ganze für je eine DB.
Wenn ich nun vorher eine Variable setze in dem alle gesuchten und gefundenen DBs mit einem compatibility level = 130 gespeichert werden soll und diese für den "ALTER DATABASE" Befehl nutze, funktioniert es einfach nicht.
Er akzeptiert die Variable nicht.
Auch beim rumspielen mit sp_msforeachdb, klappt es nicht so, wie ichs gerne hätte.
Jmd. ne Idee? 50 Datenbanken per Hand auf 140 stellen geht natürlich, macht aber wenig Spass ;)
Vielen Dank
LG
- Verschoben NobbyausHB Sonntag, 19. Januar 2020 10:20 Falsches Forum
Antworten
-
Hallo!
Wenn Du gerne sehen möchtest, welche Statements ausgeführt werden, kannst Du dir so ein Skript erzeugen und das dann ausführen. Diese Lösung unterscheidet sich also etwas von der, die Evgenij im Link geliefert hat.
USE [master] GO -- Ergebnisse als Text anzeigen, kopieren und ausführen Select 'ALTER DATABASE ' + QUOTENAME(name) + ' SET COMPATIBILITY_LEVEL = 140;' from sysdatabases where cmptlevel < 140 order by name;
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Olaf HelperMVP Montag, 20. Januar 2020 08:06
- Als Antwort markiert BlacksGood Dienstag, 21. Januar 2020 11:42
Alle Antworten
-
Moin,
dbatools?
Set-DBADBCompatibility -SQLInstance SERVER\INSTANZ -TargetCompatibility 14
Evgenij Smirnov
-
Moin,
dbatools?
Set-DBADBCompatibility -SQLInstance SERVER\INSTANZ -TargetCompatibility 14
Evgenij Smirnov
Gibt es keine Lösung ohne dbatools? Das kann ich mir fast nicht vorstellen
-
Moin,
natürlich gibt es eine reine T-SQL-Lösung. Beide Komponenten hast Du bereits identifiziert, jetzt musst Du Dich mit Schleifen in SQL beschäftigen. Oder dbatools, machen, und gut is'...
Evgenij Smirnov
-
Ja, ich wäre nicht hier, wenn ich wüsste, wie der Ansatz ist oder? ;)
Alles mühsam raus suchen, wäre eine Möglichkeit oder jmd (hier) fragen/finden, der einem das gefragt zeigen kann.
Auch dein dbatool - befehl kümmert sich nur um eine Instanze, nicht um alle.- Bearbeitet BlacksGood Samstag, 18. Januar 2020 15:24
-
Auch dein dbatool - befehl kümmert sich nur um eine Instanze, nicht um alle.
Ja, aber indem man ihm ein Array an Instanzen gibt, kann er sich sofort um mehrere Instanzen kümmern. Für T-SQL-basierte Vefahren ist die Instanz die Grenze der Betrachtung, denn eine Instanz weiß ja nichts von den anderen, auch wenn sie auf dem gleichen Server/Cluster laufen.
Aber: Google nach "T-SQL change compatibility for all databases" liefert als Ergebnis #3 das folgende: https://mikesdatawork.wordpress.com/2016/12/12/change-compatibility-levels-for-all-databases/
Freilich nur für eine Instanz ;-)
Evgenij Smirnov
-
Hallo!
Wenn Du gerne sehen möchtest, welche Statements ausgeführt werden, kannst Du dir so ein Skript erzeugen und das dann ausführen. Diese Lösung unterscheidet sich also etwas von der, die Evgenij im Link geliefert hat.
USE [master] GO -- Ergebnisse als Text anzeigen, kopieren und ausführen Select 'ALTER DATABASE ' + QUOTENAME(name) + ' SET COMPATIBILITY_LEVEL = 140;' from sysdatabases where cmptlevel < 140 order by name;
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Olaf HelperMVP Montag, 20. Januar 2020 08:06
- Als Antwort markiert BlacksGood Dienstag, 21. Januar 2020 11:42
-
Hallo!
Wenn Du gerne sehen möchtest, welche Statements ausgeführt werden, kannst Du dir so ein Skript erzeugen und das dann ausführen. Diese Lösung unterscheidet sich also etwas von der, die Evgenij im Link geliefert hat.
USE [master] GO -- Ergebnisse als Text anzeigen, kopieren und ausführen Select 'ALTER DATABASE ' + QUOTENAME(name) + ' SET COMPATIBILITY_LEVEL = 140;' from sysdatabases where cmptlevel < 140 order by name;
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
Danke euch, ich werde das auch mal ausprobieren.
Wird sich dich ein weg finden lassen =)