SQL Server 2008 R2で実行されている非常に古いデータベースがあります。データベースは2000(80)互換モードで実行されており、ストアドプロシージャ、ビュー、関数に多数の非ANSI結合があります。
CTE SQL、ROW_NUMBER OVER (PARTITION BY)
などを使用できるようにするには、このデータベースを少なくとも2005互換モードに更新する必要があります。
最初にSQL Server 2008 R2にアップグレードしたとき、明らかに最初にアップグレードアドバイザー2008 R2を実行し、非ANSI結合があったすべてのSQLを強調表示しました。それらを無視してデータベースをSQL Server 2000(80)互換モードにしました。
現在、SQL Server 2008 R2アップグレードアドバイザーは、バージョンがサポートされておらず(既にそのバージョンを使用しているため)、2000(80)データベースは2012アップグレードアドバイザーでサポートされていないため機能しなくなります。どちらか。
データベース全体のスクリプトを作成し、*=
と=*
と*=*
などをチェックするのに苦労して足りない私の質問は、すべてのプロシージャ、ビュー、関数を検出するために使用できるツールがあるかどうかです。これらの結合が含まれているので、それらを書き直すことができます。
これにより、いくつかの誤検知が発生する可能性があります(たとえば、*=
をコメントに含めます)。
SELECT
obj = QUOTENAME(SCHEMA_NAME(o.[object_id]))
+ '.' + QUOTENAME(o.name),
o.type_desc
FROM sys.sql_modules AS m
INNER JOIN sys.objects AS o
ON m.[object_id] = o.[object_id]
WHERE m.definition LIKE '%=*%'
OR m.definition LIKE '%*=%';
syscomments 互換ビューには、すべてのストアドプロシージャ、トリガー、関数、および類似のオブジェクトのコードのコピーが含まれています。 「LIKE」基準を使用して簡単に検索して、更新が必要なオブジェクトIDのリストを見つけることができます。