Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Редактировать много процедур  [new]
Badger
Member

Откуда: Москва
Сообщений: 238
Добрый день.

На базе данных почти семь тысяч хранимых процедур.
Мне нужно исправить 1280. Можно ли открыть для редактирования сразу много процедур, если я пользуюсь SQL Server Management Studio 15?


Поставил я себе еще DBArtisan 17.0.3 но в нем можно выделять несколько процедур кликом с зажатым Ctrl, и потом для всех сделать Extract! Супер! Но это тоже не просто, в глазах уже рябит, т.к. можно кликнуть не по той процедуре, т.к. имена процедур бывают очень похожи. А при скроле можно сбить уже выделенные.

Список процедур очень разношерстный. Поэтому я ищу способ как то устанавливать фильтр и сделать Extract для всех только моих процедур, из моего списка?

Поиск по внутреннему коду процедуры не предлагать, т.к. нужный код встречается и в других процедурах, (не из моего списка).
17 июн 19, 16:56    [21910014]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36965
1280 процедур редактировать руками? O_o
17 июн 19, 17:00    [21910019]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
iiyama
Member

Откуда:
Сообщений: 642
Badger,
Можно завести дополнительную схему (Например назвать ее [test] ) и скопировать нужные объекты туда.
17 июн 19, 17:13    [21910041]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4200
Badger
Мне нужно исправить 1280.

если речь идет только об изменении названия объектов, то может проще использовать алиасы?
17 июн 19, 17:43    [21910092]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4712
Badger,

Я так понимаю, речь идет о таком сценарии:
1) Получить скрипты процедур
2) Сделать определенные замены по шаблону
3) Убедиться, что все работает

Возможно вам следует снять скрипт всех процедур в БД и сделать поиск и замену. (right click на БД -> tasks -> Generate Scripts )

Затем накатить то, что получилось.

При этом вы должны понимать, как вы это все будете проверять.
17 июн 19, 17:52    [21910096]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
msLex
Member

Откуда:
Сообщений: 8065
SQL2008
Badger
Мне нужно исправить 1280.

если речь идет только об изменении названия объектов, то может проще использовать алиасы?


Если речь идет только об переименовании объекта, то sp_rename + динамический sql решат все проблемы.


Я подозреваю, что нужно подправить часть стандартного шаблона.


Badger, если это так, то с таким количеством объектов посмотрите в сторону каких-нибудь regex-ов
17 июн 19, 17:53    [21910098]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
Badger
Member

Откуда: Москва
Сообщений: 238
iiyama, спасибо, ваша идея сработала....

CREATE SCHEMA [Temp] AUTHORIZATION dbo
GO
ALTER SCHEMA [Temp] TRANSFER [dbo].[spMyProc1];
ALTER SCHEMA [Temp] TRANSFER [dbo].[spMyProc2];
17 июн 19, 18:00    [21910103]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4712
Badger,

SELECT DISTINCT
       o.name AS Object_Name,
       o.type_desc, definition
  FROM sys.sql_modules m
       INNER JOIN
       sys.objects o
         ON m.object_id = o.object_id
 --WHERE m.definition Like '%[ABD]%';
17 июн 19, 18:15    [21910116]     Ответить | Цитировать Сообщить модератору
 Re: Редактировать много процедур  [new]
Badger
Member

Откуда: Москва
Сообщений: 238
SQL2008
если речь идет только об изменении названия объектов, то может проще использовать алиасы?
Нет речь шла не о переименования объектов, а об однотипном изменение SQL текста внутри процедур. Я понимал, что сделать это можно при помощи DBArtisan который позволяет извлечь любое количество процедур в один текстовый файл для редактирования и дальнейшей компиляции всех измененных процедур разом. Проблема заключалась в том, что нужный список процедур очень разношерстный и большой. И открывать каждую процедуру для изменения по меньшей степени не эффективно, и заняло бы кучу времени. Идея создать для списка процедур отдельную схему, и отфильтровать по этой схеме, мне в голову не приходила. И большое спасибо за идею
iiyama
Badger,
Можно завести дополнительную схему (Например назвать ее [test] ) и скопировать нужные объекты туда.

CREATE SCHEMA [Temp] AUTHORIZATION dbo
GO
ALTER SCHEMA [Temp] TRANSFER [dbo].[spMyProc1];
ALTER SCHEMA [Temp] TRANSFER [dbo].[spMyProc2];
что и было сделано и на данный момент задача выполнена. Всем большое спасибо.
18 июн 19, 12:01    [21910460]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить