Как я могу найти все зависимости внешнего ключа для определенного столбца?
Какие есть альтернативы (графически в SSMS, запросы / представления в SQL Server, сторонние инструменты для баз данных, код в .NET)?
.net
sql-server
foreign-keys
Даже Миен
источник
источник
пытаться:
sp_help [table_name]
вы получите всю информацию о таблице, включая все внешние ключи
источник
sp_fkeys [table]
sp_fkeys @fktable_name='TableName'
Если вы планируете удалить или переименовать таблицу или столбец, то может быть недостаточно найти только зависимости внешнего ключа.
Ссылки на таблицы, не связанные с внешним ключом. Вам также нужно будет найти ссылки на таблицы, которые могут быть не связаны с внешним ключом (я видел много баз данных с плохим дизайном, в которых не определены внешние ключи, но в которых есть связанные данные. ). Решением может быть поиск имени столбца во всех таблицах и поиск похожих столбцов.
Другие объекты базы данных - это, вероятно, немного не по теме, но если вы искали все ссылки, важно также проверить наличие зависимых объектов.
Инструменты с графическим интерфейсом. Попробуйте опцию «Найти связанные объекты» в SSMS или инструменты, такие как ApexSQL Search (бесплатный инструмент, интегрируется в SSMS), чтобы идентифицировать все зависимые объекты, включая таблицы, связанные с внешним ключом.
источник
Поскольку ваш вопрос ориентирован на одну таблицу, вы можете использовать это:
Я нашел это на ТАК здесь:
https://stackoverflow.com/a/12956348/652519
Я нашел нужную мне информацию довольно быстро. В нем перечислены таблица, столбец и имя внешнего ключа.
РЕДАКТИРОВАТЬ
Вот ссылка на документацию, в которой подробно описаны различные параметры, которые можно использовать: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-fkeys-transact-sql
источник
Я думаю, что этот скрипт дешевле
источник
Тот, который мне действительно нравится использовать, называется Red Dependency Tracker от Red Gate Software . Вы можете добавить любой объект (ы) базы данных, такие как таблицы, хранимые процедуры и т. Д., И тогда он автоматически проведет линии связи между всеми другими объектами, которые зависят от выбранных вами элементов.
Дает очень хорошее графическое представление зависимостей в вашей схеме.
источник
Большое спасибо Джону Сэнсому, его запрос потрясающий!
Кроме того: вы должны добавить «И PT.ORDINAL_POSITION = CU.ORDINAL_POSITION» в конце вашего запроса.
Если у вас есть несколько полей в первичном ключе, этот оператор будет сопоставлять соответствующие поля друг с другом (у меня был случай, ваш запрос создал все комбинации, поэтому для 2 полей в первичном ключе у меня было 4 результата для соответствующего внешнего ключа) ,
(Извините, я не могу прокомментировать ответ Джона, так как у меня недостаточно очков репутации).
источник
Этот запрос вернет подробности о внешних ключах в таблице, он поддерживает несколько ключей столбцов.
источник
После долгих поисков я нашел рабочее решение. Моя база данных не использует sys.foreign_key_columns, а information_schema.key_column_usage содержит только первичные ключи.
Я использую SQL Server 2015
РЕШЕНИЕ 1 (редко используется)
Если другие решения не работают, это будет работать нормально:
РЕШЕНИЕ 2 (обычно используется)
В большинстве случаев это будет работать просто отлично:
источник
Вы можете использовать INFORMATION_SCHEMA.KEY_COLUMN_USAGE и sys.foreign_key_columns для получения метаданных внешнего ключа для таблицы, т. Е. Имени ограничения, справочной таблицы, столбца ссылок и т. Д.
Ниже приведен запрос:
источник
Просто записка для @ "Джона Сэнсома",
Если ищутся зависимости внешнего ключа , я думаю, что предложение PT Where должно быть:
и это условие ВКЛ :
Как обычно используется первичный ключ внешней таблицы, я думаю, что эта проблема не была замечена ранее.
источник
Это даст вам:
Сама ФК Схема, к которой принадлежит ФК
источник
ИСПОЛЬЗОВАНИЕ information_schema;
источник