В SQL Server, как определить * все * зависимости для конкретной таблицы, используя системные таблицы / представления? - PullRequest
2 голосов
/ 10 сентября 2008

Я пишу сценарий DDL для удаления нескольких таблиц, но сначала нужно определить все зависимости для этих таблиц. Эти зависимости включают ограничения внешнего ключа, хранимые процедуры, представления и т. Д. Предпочтительно, я хочу программно выполнить сценарий удаления этих зависимостей, используя системные таблицы / представления перед удалением зависимой таблицы.

Ответы [ 5 ]

3 голосов
/ 10 сентября 2008

Это очень грязно писать с нуля. Рассматривали ли вы сторонний инструмент, как Отслеживание зависимостей Red-Gate SQL ?

1 голос
/ 10 сентября 2008

sp_depends не является надежным, см .: Вы зависите от sp_depends (без каламбура)

0 голосов
/ 18 июня 2009

Не могли бы вы сослаться на 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 вызовов. Должно работать.

0 голосов
/ 10 сентября 2008

Вы всегда можете искать в таблице syscomments .... хотя это может занять некоторое время ...

0 голосов
/ 10 сентября 2008

Вы можете использовать хранимую процедуру sp_depends, чтобы сделать это:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...