4

INFORMATION_SCHEMA、sys.objects、またはその他のメタデータで WITH RECOMPILE と宣言されている SP をどのように見つけますか?

(私はシステムの状態監視にいくつかのコードを追加しており、そのように宣言されているコードが正当化できない場合に警告したいと考えています。)

注:「WITH RECOMPILE」の一般的なテキスト検索を探しているわけではありません。既に実行できますが、テキストのコメント付きバージョンまたはリテラル バージョンに対して誤検知が発生します。

4

3 に答える 3

1

私が使用する迅速で汚い方法については:

SELECT
     o.name
FROM
     syscomments c
INNER JOIN sys.objects o ON
     o.object_id = c.id
WHERE
     c.text LIKE '%WITH RECOMPILE%'

ただし、実際のアプリケーションで使用するのはおそらく良い考えではありません。数分あれば、よりクリーンな方法を掘り下げようとします。上記は、その文字列がコメント化されている proc もキャッチし、MS SQL Server 固有のテーブル syscomments などを使用します。

于 2009-01-12T16:39:11.160 に答える
1

これは、特定の検索文字列に対してユーザー定義のビュー、ストアド プロシージャ、および関数を検索するために使用するクエリです。

DECLARE @strSearch varchar(50)
SELECT @strSearch = 'my search string'

SELECT
    so.[Name],
    OBJECT_ID(so.[Name])    
FROM
    [sysobjects] so
JOIN
    syscomments sc
ON
    sc.[ID] = OBJECT_ID(so.[Name])
WHERE 
    (so.[xtype] = 'FN' OR so.[xtype] = 'P' OR so.[xtype] = 'V') AND
    so.[category] = 0 AND
    sc.encrypted = 0 AND
    sc.[text] like '%' + @strSearch + '%'
于 2009-01-12T16:44:21.307 に答える
0

SQL Server Central ForumsのGSquaredのおかげで、 というフラグが見つかりました。is_recompiledsys.sql_modules

于 2009-01-12T20:19:54.040 に答える