powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / определить не валидные SP
8 сообщений из 33, страница 2 из 2
определить не валидные SP
    #39916707
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
Как бы это отловить ставшие невалидными поля
Зависимости от столбцов могут не храниться.

Получить желаемое можно с помощью sys.dm_sql_referenced_entities и анализа ошибок 207. Причем запуск из T-SQL бесполезен, ибо выдаст только последнюю ошибку.
Само-собой для DSQL этот способ не подойдет.
...
Рейтинг: 0 / 0
определить не валидные SP
    #39916715
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя можно и на T-SQL извратиться. Примерно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
use tempdb;
go

create procedure dbo.p
as
begin
 select c, d from dbo.t;
end;
go

create table dbo.t (a int, b int);
go

declare @s varchar(8000) = 'sqlcmd -S ' + quotename(@@servername, '"') + ' -E -d ' + quotename(db_name(), '"') + ' -Q ' + quotename('select * from sys.dm_sql_referenced_entities(''dbo.p'', ''object'')', '"')

declare @t table (s varchar(1000));
insert into @t
 exec xp_cmdshell @s;

select * from @t where s like 'Invalid column name%';
go

drop procedure dbo.p;
drop table dbo.t;
go
...
Рейтинг: 0 / 0
определить не валидные SP
    #39916718
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, СПС
не до конца понял
Invalid column name 'c'.
Invalid column name 'd'.
Код: sql
1.
select * from sys.dm_sql_referenced_entities('dbo.p', 'object')



да у меня выдает по конкретной SP ошибки - я понял вызов xp_cmdshell это обертка чтобы можно было найти
но SP меняющихся > 200 - и меняют 3+ человека
идея накатить на тест.окружение
и как-то одним (несколькими) запросами найти все ставшие НЕвалидными
...
Рейтинг: 0 / 0
определить не валидные SP
    #39916723
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
но SP меняющихся > 200 - и меняют 3+ человека
Что мешает пройтись циклом по перечню процедур и запускать предложенный код?
...
Рейтинг: 0 / 0
определить не валидные SP
    #39916731
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,
СПС
да так и сделаю - получается цикл а не запрос
но задачу решит
...
Рейтинг: 0 / 0
определить не валидные SP
    #39916755
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к сожалению идея не прокатила

Код: sql
1.
select * from sys.dm_sql_referenced_entities('dbo.rep_GraphMoneyClientVal', 'object')



не ловит в запросах
case isnull(deb.Number111, 0) -- поменял на некорректное имя

красным да подсвечивает в SSMS

но не ловит
и это нав. правильно ибо там в SP есть #Tmp таблицы создаваемы ВНЕ (перед вызовом) даннызх SP

вообщем по ходу сложно это будет отловить автоматичкски.
...
Рейтинг: 0 / 0
определить не валидные SP
    #39916859
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
вообщем по ходу сложно это будет отловить автоматичкски.
Конечно, только что то, в некоторых случаях.
Как уже сказали, решается постановкой процессов разработки и тестирования.
...
Рейтинг: 0 / 0
определить не валидные SP
    #39916876
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
и это нав. правильно ибо там в SP есть #Tmp таблицы создаваемы ВНЕ (перед вызовом) даннызх SP
Конечно правильно - нельзя анализировать то, чего нет.
Вообще внешние временные таблицы в процедурах - пагубная практика. Особенно когда много одновременных соединений и мало ресурсов.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / определить не валидные SP
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]