2012-04-02 31 views
4

これまで、SSMSでテーブルを右クリックして[依存関係の表示]をクリックすると、テーブルを使用するすべてのテーブルとストアドプロシージャが一覧表示されました。しかし、最近私はそれがいくつかの依存関係を見逃していることに気づいたSQL Management Studio '依存関係の表示'ですべての依存関係が表示されない

時には、SELECT文を使用して参照するストアドプロックがいくつか欠けていることがあります。時にはINSERT文またはUPDATE文もあります。依存するものとそうでないものに共通するパターンはないようです。誰にでもこれを見せることができますか?システム管理者権限を持っています。

私の最終的な目標は、特定のテーブル/ビュー/ストアドプロシージャのすべての依存関係を、最も簡単な方法で見つけることですスクリプティングはありません)、いくつかの依存関係だけでなくすべての依存関係を返す必要があります。どんな助け?

PS。 SQL Server 2005とSSMS 2005を使用しています。

ありがとうございました。

+3

[これは2008年のことですが、多くの有用な情報があります](http://sqlblog.com/blogs/aaron_bertrand/archive/2008/09/09/keeping-sysdepends-up-to- date-in-sql-server-2008.aspx) –

答えて

9

これはSQLサーバーの「既知の」問題です。実際にこのSSMS機能は危険です。特に、テーブルやビューを変更した場合は、どのオブジェクトを変更する必要があるかを知りたいときに使います。また

- 限りオブジェクトのテキストがあなたのテーブルの名前が

RECORD1に切断することができるように、8000個のシンボルが、それは、いくつかの部分に分割されることが多いかのように、syscommentsの中で検索するスクリプトを使用しないでください。 ...... table_that_yo

RECORD2:u_search ........

は、以前は私の「レシピ」は、ディスクへのテキストファイルにスクリプトにすべての目的であったといずれかを使用して、「ファイルを検索」を実行テキストエディタ - Notepad ++(ファイルで検索)機能のSSMSのように。

私は今、組み込みのSQL関数を使用してオブジェクト定義での検索ができますスクリプトを作成しました:私はちょうど管理Studioと同じ問題に気づいた

/* 
This is an easy way to look through the sources of all objects in the database 
if you need to find particular string. This script can be used, for example, 
to find references of some specific object by other objects. Depending on the 
size of your database you might want to limit the search scope to particular 
object type. Just comment unneeded object types in WHERE statement. 
Enter search string between %% marks in @SearchPattern initialisation statement. 
When you get the results you can copy object name from "FullName" column and 
use SSMSBoost to quickly locate it in the object explorer, or you can continue 
searching in results using "Find in ResultsGrid" function. 

This script is provided to you by SSMSBoost add-in team as is. Improvements and 
comments are welcome. 
Redistribution with reference to SSMSBoost project website is welcome. 
SSMSBoost team, 2014 
*/ 

DECLARE @SearchPattern NVARCHAR(128) 

SET @SearchPattern = '%%' 

SELECT SCHEMA_NAME(o.schema_id) as [schema] 
,  o.[name] 
,  o.[type] 
,  '['+SCHEMA_NAME(o.schema_id)+'].['+o.[name]+']' as FullName 
,  OBJECT_DEFINITION(object_id) AS [Source] 
FROM sys.objects AS o 
WHERE lower(OBJECT_DEFINITION(o.object_id)) LIKE lower(@SearchPattern) 
    AND o.[type] IN (
    'C',--- = Check constraint 
    'D',--- = Default (constraint or stand-alone) 
    'P',--- = SQL stored procedure 
    'FN',--- = SQL scalar function 
    'R',--- = Rule 
    'RF',--- = Replication filter procedure 
    'TR',--- = SQL trigger (schema-scoped DML trigger, or DDL trigger at either the database or server scope) 
    'IF',--- = SQL inline table-valued function 
    'TF',--- = SQL table-valued function 
    'V') --- = View 
ORDER BY o.[type] 
,  o.[name] 
+0

私はそれが来なければならないことを恐れていました...しかし、疑いを確認してくれてありがとう。 –

+0

OBJECT_DEFINITION()関数に基づいてSQLスクリプトを作成しました。この関数を使用して、オブジェクトをテキストファイルにスクリプト化せずにSSMSから直接依存関係を検索することができます。スクリプトはここにあります:http://www.ssmsboost.com/social/yaf_postst123_Search-in-Sources--sis--Autoreplacement.aspx –

+1

よく見えます。なぜあなたはあなたの答えを更新してスクリプトを含めませんか?この質問に対する他の訪問者のための参考になるでしょう。 :) –

1

を。

しかし、幸いにもVisual Studio Database projectsを使用し、「スキーマの表示」ペインを使用すると、項目を右クリックして依存関係を表示できることがわかりました。依存関係は正確であるように見えます。

+0

SQL Serverオブジェクトエクスプローラのデータベースからプロジェクトを作成し、目的のオブジェクトをクリックして、T-SQLビューで参照先の列またはテーブルを選択し、右クリックして[検索]をクリックする必要がありましたすべての参考文献を参照してください。ありがとうございました –

関連する問題