60

予期せず変更されたテーブルの値があります。問題の列は次のCreatedDateとおりです。これはアイテムの作成時に設定されますが、ストアド プロシージャによって変更されています。

SELECTテーブルからこの列を参照するすべてのプロシージャ名を取得するステートメントを作成できますか?

4

9 に答える 9

82

1 つのオプションは、スクリプト ファイルを作成することです。

データベースを右クリック-> タスク -> スクリプトの生成

次に、すべてのストアド プロシージャを選択し、すべての sps を含むスクリプトを生成できます。したがって、そこから参照を見つけることができます。

または

-- Search in All Objects
SELECT OBJECT_NAME(OBJECT_ID),
definition
FROM sys.sql_modules
WHERE definition LIKE '%' + 'CreatedDate' + '%'
GO

-- Search in Stored Procedure Only
SELECT DISTINCT OBJECT_NAME(OBJECT_ID),
object_definition(OBJECT_ID)
FROM sys.Procedures
WHERE object_definition(OBJECT_ID) LIKE '%' + 'CreatedDate' + '%'
GO

ソースSQL SERVER – ストアド プロシージャで使用されている列を検索 – ストアド プロシージャで列名を検索

于 2013-10-23T10:58:35.597 に答える
34

特定の列のみを使用してストアド プロシージャを取得する場合は、次のクエリを使用できます。

SELECT DISTINCT Name
FROM sys.Procedures
WHERE object_definition(OBJECT_ID) LIKE '%CreatedDate%';

テーブルの特定の列を使用してストアド プロシージャを取得する場合は、以下のクエリを使用できます。

SELECT DISTINCT Name 
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%tbl_name%'
AND OBJECT_DEFINITION(OBJECT_ID) LIKE '%CreatedDate%';
于 2013-10-23T11:01:15.307 に答える
2

これを試して..

SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%CreatedDate%'
GO

または、すべての手順のスクリプトを生成して、そこから検索することもできます。

于 2013-10-23T10:58:25.117 に答える
0

-- すべてのオブジェクトを検索

SELECT OBJECT_NAME(OBJECT_ID),
definition
FROM sys.sql_modules
WHERE definition LIKE '%' + 'ColumnName' + '%'
GO

-- ストアド プロシージャのみを検索

SELECT DISTINCT OBJECT_NAME(OBJECT_ID)
FROM sys.Procedures
WHERE object_definition(OBJECT_ID) LIKE '%' + 'ColumnName' + '%'
GO
于 2020-06-09T07:11:47.880 に答える
0

以下のクエリを使用して、値を識別できます。ただし、暗号化されたストアド プロシージャからの結果は得られないことに注意してください。

SELECT DISTINCT OBJECT_NAME(comments.id) OBJECT_NAME
    ,objects.type_desc
FROM syscomments comments
    ,sys.objects objects
WHERE comments.id = objects.object_id
    AND TEXT LIKE '%CreatedDate%'
ORDER BY 1
于 2016-07-25T13:13:19.910 に答える