Среда просмотра SQL Management Studio не отображает все зависимости - PullRequest
5 голосов
/ 02 апреля 2012

Раньше я думал, что если щелкнуть правой кнопкой мыши таблицу в SSMS и нажать «Просмотр зависимостей», она выведет список всех таблиц и сохраненных процедур, использующих эту таблицу. Но недавно я заметил, что он пропускает некоторые зависимости.

Иногда он пропускает некоторые хранимые процедуры, которые ссылаются на него с помощью операторов SELECT, иногда это операторы INSERT или UPDATE. Кажется, не существует общей картины того, что зависит, а что нет. Может кто-нибудь пролить некоторый свет на это? (И нет, это не проблема разрешения. У меня есть права системного администратора.)

Моя конечная цель - найти способ найти все зависимости для конкретной таблицы / представления / хранимого процесса, используя самый простой способ (т. Е. Небольшой или нулевой сценарий), но он должен возвращать ВСЕ зависимости, а не только некоторые. Любая помощь?

PS. Я использую SQL Server 2005 и SSMS 2005.

Спасибо.

Ответы [ 2 ]

10 голосов
/ 02 апреля 2012

Это «известная» проблема с сервером SQL. И на самом деле эту функцию SSMS опасно использовать, особенно когда вы хотите узнать, какие объекты вам нужно изменить, если вы внесли некоторые изменения в таблицу или представление.

Кроме того - не используйте сценарии для поиска в системных комментариях, поскольку если текст объекта превышает 8000 символов, он будет разбит на несколько частей, чтобы имя вашей таблицы можно было разрезать на

record1: ...... table_that_yo

record2: u_search ........

Ранее мой «рецепт» заключался в том, чтобы записать весь объект в текстовые файлы на диск и выполнить «поиск в файлах» с помощью любого текстового редактора - как в SSMS функции notepad ++ (Поиск в файлах).

Я создал скрипт, который позволяет выполнять поиск в определениях объектов с использованием встроенных функций SQL:

/*
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]
1 голос
/ 08 августа 2012

Я только что заметил ту же проблему с Management Studio.

Но, к счастью, обнаружилось, что если вы используете Проекты базы данных Visual Studio и используете панель «Просмотр схемы», вы можете щелкнуть правой кнопкой мыши по элементу и просмотреть зависимости. Показанные зависимости кажутся точными.

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