Frage

Nun, letztes Weihnachten war ich sehr glücklich, weil wir die Unterstützung für SQL Server 2000 eingestellt haben.

Ich konnte aufhören, mein Gehirn zu verdrehen und freundliche analytische Funktionen zu verwenden. (Glauben Sie mir, wenn es darum geht, gespeicherte Verfahren von SQL-Server zu Oracle Analytical-Funktionen zu migrieren, sind eine Ihrer besten Freunde).

Später stellten wir fest, dass wir einen winzigen Ärger übersehen haben.

Wenn Kunden dort alte Maschinen durch neue ersetzt haben, wird standardmäßig ihr Kompatibilitätsniveau nach dem alten Computer festgelegt und die Probleme werden bis später verschoben.

Welches Problem? Analytische Funktionen funktionieren in SQL Server 2005 trotz der Kompatibilitätsstufe 80.

Ich habe Angst zu sagen, dass andere neue Funktionen wie Pivot gehemmt sind.

Jetzt ist es ein guter Zeitpunkt, um zu versuchen, Cmptlevel 80 loszuwerden, aber wie?

Für mich scannen meistens die Verfahren, Ansichten, Funktionen und Auslöser für äußere Außenverbindungen wie '*=' und '=*'.

Lassen Sie uns zunächst den definierenden Text aus den Systemtabellen finden. Anfangs wurde es in kleinen Stücken in gerettet syscomments. HHM wie man mit dem Fall umgeht, wenn '*' und '=' auf erfolgreiche Stücke aufgeteilt werden.

Verschwenden Sie Ihre Zeit nicht mit Ihrer Zeit mit Wählen Sie Routinen aus Information_Schema.routines aus Es schneidet die Definition auf 4000 Zeichen ab.

Schließlich ist dies der Code, der nach den problematischen Objekten abfragt:

select o.name , o.type, datalength(definition) len, len(definition) len, definition from sys.sql_modules m 
join sysobjects o on o.id = m.object_id
where (definition like '%*=%' or definition like '%=*%') 

Aber es gibt eine weitere Hürde. Da Standardeinstellung wird von Standardeinstellung abgeleitet Die Standardbreite für Textergebnisse ist zu klein (ich denke, es ist 256, aber da es das erste ist, wechsle ich in SSMS zu 8192, wette ich nicht).

Jeder Fall hilft, die Reihen zu identifizieren, die eine tiefere Untersuchung erfordern.

Vielleicht zeigt SP_HELP die vollständige Definition für an alle mögliche Fälle.

Vielleicht weiß es, ich weiß es nicht genau, weil ich die Probleme, die durch Punchcard -Köpfe entstanden sind, satt habe. Normalerweise benutze ich Ado und PowerShell, aber sie werden möglicherweise nicht auf dem Kundenautomaten installiert.

Gibt es 100% wasserdichte T-SQL-Skripte, um die vollständige Definition von Verfahren zu zeigen oder zu exportieren?

War es hilfreich?

Lösung

Eine schnelle Suche nach Stackoverflow würde zeigen, dass Sie verwenden sys.sql_modules oder Object_Definition Suchen Sie nach Code auf SQL Server 2005+. Sie können einfach auf SQL Server 2005+ wiederherstellen aber nicht rennen um dies zuzulassen.

Das ist, wenn Sie narren Proof T-SQL wollen. Sie könnten die SYSEMMENTS -Zeilen zusammenfassen, wenn Sie in SQL Server 2000 möchten. Ich würde nicht persönlich.

Alternativ verwenden Sie die SQL Server 2008 Upgrade Advisor am meisten aussuchen (vielleicht alle) mögliche Probleme (wie eindeutiger Reihenfolge durch Klauseln, die mich erwischten).

Beachten Sie das Red Gate SQL -Suche Unterstützt SQL Server 2005+ nur vernünftigerweise nur

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top