Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA902: как извлечь текст тригеров и процедур в набор файлов / 4 сообщений из 4, страница 1 из 1
13.10.2005, 17:44
    #33323477
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASA902: как извлечь текст тригеров и процедур в набор файлов
каждую процедуру в отдельный файл <имя процедуры>.sql
...
Рейтинг: 0 / 0
13.10.2005, 17:49
    #33323489
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASA902: как извлечь текст тригеров и процедур в набор файлов
Проще всего выгрузить структуру базы в скрипт и потом разобрать получившийся reload.sql. Смотри утилиту dbunload.exe

Либо читай таблицы SYS.SYSPROCEDURE, поля proc_name, proc_defn и SYS.SYSTRIGGER (trigger_name, trigger_defn) и записывай текст из полей ?_defn в файлы.
...
Рейтинг: 0 / 0
14.10.2005, 15:06
    #33325405
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASA902: как извлечь текст тригеров и процедур в набор файлов
Вот что у меня получилось, может кому пригодится:
Код: plaintext
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.
26.
27.
28.
29.
CREATE PROCEDURE "DBA"."sp_am_exportscripts"( IN @dest varchar( 255 ), IN @creator varchar( 50 ) DEFAULT 'DBA' )
// процедура экспортирует хранимые процедуры и триггеры БД в набор файлов вида <имя файла>.sql в папку @dest
BEGIN
    if right(@dest,  1 ) <> '\' then set @dest = @dest + '\' end if;

    select p.proc_name, xp_write_file( @dest + p.proc_name + '.sql', 
        'if exists(select 1 from sys.sysprocedure where proc_name = ''' + p.proc_name + '''' + 
        ' and user_name(creator) = ''' + @creator + ''') then \x0D\x0A' +
        '   drop procedure ' + p.proc_name + '\x0D\x0A' +
        'end if;\x0D\x0A\x0D\x0A' +
        replace(isnull(p.source, p.proc_defn), '\x0A', '\x0D\x0A') + ';' ) as result
    from
       sys.sysprocedure p
    where user_name(p.creator) = @creator
    union all
    select r.trigger_name, xp_write_file( @dest + r.trigger_name + '.sql', 
        'if exists(select 1 from sys.systrigger where trigger_name = ''' + r.trigger_name+ '''' +
        ') then \x0D\x0A' +
        '   drop trigger ' + r.trigger_name + '\x0D\x0A' +
        'end if;\x0D\x0A\x0D\x0A' +
        replace(isnull(r.source, r.trigger_defn), '\x0A', '\x0D\x0A') + ';' ) as result
    from 
       sys.sysuserperms u
          join sys.systable t on (t.creator=u.user_id)
          join sys.systrigger r on (r.table_id = t.table_id)
    where 
      r.trigger_name is not null
      and u.user_name = @creator;

END
...
Рейтинг: 0 / 0
14.11.2005, 13:47
    #33376646
barry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASA902: как извлечь текст тригеров и процедур в набор файлов
rcryoВот что у меня получилось, может кому пригодится:
Как отделить пользователькие процедуры/триггера от системных?
Может я конечно что-то в скрипте не досмотрел...
Версия тоже ASA902.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA902: как извлечь текст тригеров и процедур в набор файлов / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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