2008-09-09 12 views
2

私は、いくつかのテーブルを削除するDDLスクリプトを作成していますが、それらのテーブルのすべての依存関係を最初に識別する必要があります。これらの依存関係には、外部キー制約、ストアドプロシージャ、ビューなどがあります。好ましくは、従属テーブルを削除する前に、システムテーブル/ビューを使用してそれらの依存関係を削除するスクリプトをプログラムで実行します。SQL Serverでは、システムテーブル/ビューを使用して特定のテーブルの* all *依存関係を特定するにはどうすればよいですか?

答えて

-2

あなたはこれを行うにでsp_dependsストアドプロシージャを使用することができます。

USE AdventureWorks GO EXEC sp_depends @objname = N'Sales.Customer' ;

http://msdn.microsoft.com/en-us/library/ms189487(SQL.90).aspx

+0

sp_dependsは償却されており、リンクですでに識別されているさまざまな問題に対して正しい結果を提供しません。http://sqlblog.com/blogs/denis_gobo/archive/2008/05/06/6653.aspx – Xander

3

は、これは最初から書くのは非常に厄介です。 Red-Gate SQL Dependency Trackerのようなサードパーティのツールを使用していますか?

0

あなたは常にsyscommentsテーブルを検索でき....しかししばらく時間がかかるかもしれない...

0

あなたはsysreferencesを参照してもらえますか?

select 'if exists (select name from sysobjects where name = '''+c.name+''') ' 
+' alter table ' + t.name +' drop constraint '+ c.name 
from sysreferences sbr, sysobjects c, sysobjects t, sysobjects r 
where c.id = constrid 
    and t.id = tableid 
    and reftabid = r.id 
    and r.name = 'my_table' 

これは、条件付きdrop constraintコールの全体を生成します。うまくいくはずです。

関連する問題