Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
Нашел скрипт на создание ddl триггера который логгирует изменения структуры базы данных. Все устраивает, кроме одного. Подскажите есть ли системная функция или процедура, которая покажет что было до изменения структуры???
Функция, показывающая что стало после изменения, это evendata().
28 окт 15, 11:05    [18336480]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mih_dim
Подскажите есть ли системная функция или процедура, которая покажет что было до изменения структуры???
Функция, показывающая что стало после изменения, это evendata().

То, что было до изменения, уже должно быть в вашем логе
28 окт 15, 11:06    [18336495]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
Glory
Mih_dim
Подскажите есть ли системная функция или процедура, которая покажет что было до изменения структуры???
Функция, показывающая что стало после изменения, это evendata().

То, что было до изменения, уже должно быть в вашем логе


Т.е. первоначально я должен записать всю структуру в лог? Тогда подскажите как это сделать. Может уже есть готовый скрипт?
А получить данные до изменения во время изменения нельзя?
28 окт 15, 11:50    [18336811]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mih_dim
Может уже есть готовый скрипт?

Готовый скрипт для вашего неизвестного лога ??
Mih_dim
А получить данные до изменения во время изменения нельзя?

А что для вас собственно есть "таблица до изменения" ?

ЗЫ
И evendata() кстати показывает то, " что стало после изменения", а аттрибуты события DDL
The ALTER_TABLE event data includes the names of the columns, constraints, or triggers affected by the ALTER TABLE statement and the action (create, alter, drop, enable, or disable) performed on the affected objects.
28 окт 15, 11:55    [18336848]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
Glory
Mih_dim
Может уже есть готовый скрипт?

Готовый скрипт для вашего неизвестного лога ??

Mih_dim
А получить данные до изменения во время изменения нельзя?

А что для вас собственно есть "таблица до изменения" ?



Лог тех же изменений, которые сохраняет триггер, а именно
DDL_TABLE_VIEW_EVENTS, DDL_FUNCTION_EVENTS, DDL_PROCEDURE_EVENTS.

Это Таблица без изменений. Без добавленного нового поля например.
28 окт 15, 12:18    [18337014]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mih_dim
Лог тех же изменений, которые сохраняет триггер, а именно
DDL_TABLE_VIEW_EVENTS, DDL_FUNCTION_EVENTS, DDL_PROCEDURE_EVENTS.

Это Таблица без изменений. Без добавленного нового поля например.

Мда.
- создайте свой триггер
- выполните CREATE TABLE со всеми нужными вам "параметрами"
28 окт 15, 12:30    [18337115]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
хе-хе )
Guest
cdc https://technet.microsoft.com/ru-ru/library/bb522489(v=sql.105).aspx
28 окт 15, 15:27    [18338736]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
o-o
Guest
хе-хе )
cdc https://technet.microsoft.com/ru-ru/library/bb522489(v=sql.105).aspx

cdc отслеживает изменение данных, а не структуры
28 окт 15, 15:41    [18338798]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
хе-хе )
Guest
o-o
хе-хе )
cdc https://technet.microsoft.com/ru-ru/library/bb522489(v=sql.105).aspx

cdc отслеживает изменение данных, а не структуры

cdc.ddl_history https://msdn.microsoft.com/ru-ru/library/bb510681.aspx
28 окт 15, 16:13    [18338988]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
Glory
Mih_dim
Лог тех же изменений, которые сохраняет триггер, а именно
DDL_TABLE_VIEW_EVENTS, DDL_FUNCTION_EVENTS, DDL_PROCEDURE_EVENTS.

Это Таблица без изменений. Без добавленного нового поля например.

Мда.
- создайте свой триггер
- выполните CREATE TABLE со всеми нужными вам "параметрами"


Что мда?
Да ты капитан очевидность.
И так в курсе что должен создать таблицу куда будет логгироваться изменения и написать триггер (тем боле он уже мною написан). Я не спрашивал что делать, я спрашивал есть ли готовый запрос(или подобный запрос, чтобы не с нуля писать и разбираться) на сохранения текущего состояния структуры базы данных в таблицу или как получить данные до изменения подругому?

И мне нужно логгировать не только таблицы, но и представления, хранимые процедуры и функции.
28 окт 15, 16:44    [18339223]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
o-o
Guest
хе-хе ),

да, действительно.
но только зачем, когда DDL-триггер в 5 строк отловит все то же самое и даже больше?
это же надо настраивать + ограничения на редакцию, а выигрыш в чем?
28 окт 15, 16:46    [18339237]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
хе-хе )
o-o
пропущено...

cdc отслеживает изменение данных, а не структуры

cdc.ddl_history https://msdn.microsoft.com/ru-ru/library/bb510681.aspx


Ну тут походу изменение только по таблицам, а мне нужно еще представления, функции и хранимые процедуры.
28 окт 15, 16:48    [18339252]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
o-o
Guest
Mih_dim
есть ли готовый запрос(или подобный запрос, чтобы не с нуля писать и разбираться) на сохранения текущего состояния структуры базы данных в таблицу или как получить данные до изменения подругому?

в каком смысле скрипт структуры базы в таблицу получить?
всю базу можно из студии заскриптить в файл.
если очень надо, файл этот в таблицу потом считать.
---
и зачем хамить?
топик закроют, больше ничего не добьетесь
28 окт 15, 16:51    [18339280]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
o-o
Guest
Mih_dim
хе-хе )
пропущено...

cdc.ddl_history https://msdn.microsoft.com/ru-ru/library/bb510681.aspx


Ну тут походу изменение только по таблицам, а мне нужно еще представления, функции и хранимые процедуры.

вы лучше редакцию сервера зацените.
cdc
Система отслеживания изменений в данных доступна только в следующих выпусках: Enterprise, Developer и Evaluation SQL Server.

это вроде вы в редакциях плавали недавно?
дороже Энтерпрайза не придумаешь
28 окт 15, 16:55    [18339310]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
хе-хе )
Guest
o-o,
Я сейчас не понял суть претензий - ТС просит варианты, не сообщая в чем хочет профит. Про редакцию и ограничения не сообщает.
Вот недавно заюзал data-tier application для cont.int. Хоть в express настраивай
там глубже можно смотреть историю DAC-пакетов
https://msdn.microsoft.com/ru-ru/library/ee210546(v=sql.110).aspx
28 окт 15, 17:04    [18339342]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
нашел бабушкин скрипт
Guest
Mih_dim
хе-хе )
пропущено...

cdc.ddl_history https://msdn.microsoft.com/ru-ru/library/bb510681.aspx


Ну тут походу изменение только по таблицам, а мне нужно еще представления, функции и хранимые процедуры.

дифф объектов БД по боевой базе не смотрят
храните скрипты и/или модель в системе контроля версий

автор
Подскажите есть ли системная функция или процедура, которая покажет что было до изменения структуры?

есть: сначала создаем триггер, потом накатываем структуру.

как вариант, можно сделать эмуляцию на другой пустой базе:
со своей базы получить скрипты создания всего,
на пустой базе создать триггер, накатить мега-скрипт,
из лога перелить в основную базу

по ним не нужно смотреть "что было", по ним нужно отслеживать события внесения изменений: кто когда чего накатывал/альтерил

cdc... "чтобы снести что-нибудь ненужное, надо сначала настроить что-нибудь ненужное" - если только в этом ключе.
28 окт 15, 17:06    [18339354]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mih_dim
Что мда?
Да ты капитан очевидность.
И так в курсе что должен создать таблицу куда будет логгироваться изменения и написать триггер (тем боле он уже мною написан). Я не спрашивал что делать, я спрашивал есть ли готовый запрос(или подобный запрос, чтобы не с нуля писать и разбираться) на сохранения текущего состояния структуры базы данных в таблицу или как получить данные до изменения подругому?

И мне нужно логгировать не только таблицы, но и представления, хранимые процедуры и функции.

Для шибко умных рядовых
"Готовый скрипт на сохранения текущего состояния структуры базы" есть в меню студии. Называется он Scipting
А просто умные люди для " получить данные до изменения подругому" используют специальное ПО. Которое так и называется - система контроля версий.
29 окт 15, 09:12    [18341369]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Adx
Guest
Интересно, что это за подход к разработке, что нужно изменения в структурах логировать? И зачем?
29 окт 15, 12:11    [18342574]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Adx
Интересно, что это за подход к разработке, что нужно изменения в структурах логировать? И зачем?

видимо волюнтаризм с правами на проде
29 окт 15, 14:26    [18343644]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
o-o
Mih_dim
есть ли готовый запрос(или подобный запрос, чтобы не с нуля писать и разбираться) на сохранения текущего состояния структуры базы данных в таблицу или как получить данные до изменения подругому?

в каком смысле скрипт структуры базы в таблицу получить?
всю базу можно из студии заскриптить в файл.
если очень надо, файл этот в таблицу потом считать.
---
и зачем хамить?
топик закроют, больше ничего не добьетесь


У меня есть скрипт, который логирует изменение структуры базы в лог-таблицу, а именно изменение структуры таблиц, представлений, хранимых процедур и функций. Это происходит в DDL триггере. Но в нем я так понимаю получить то что было до изменения с нельзя (т.е. нет системной функции или процедуры которая бы вернула то что было до изменения). Значить мне нужно разово записать в лог-таблицу первоначально все структуры из базы, а именно структуру таблиц и тексты представлений, хранимых процедур и функций. Притом они должны быть в том же формате что и возвращает функция в ddl-триггере. Тогда в лог-таблице у -меня будет история изменений в виде стека. Вот мне и нужен такой скрипт(или ссылка на статью по SQL для написания этого скрипта), который заполнит лог-таблицу первоначально.
----
Если закроют, значит не судьба. Пока же не закрыли ))))
30 окт 15, 09:28    [18347252]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
o-o
Mih_dim
пропущено...


Ну тут походу изменение только по таблицам, а мне нужно еще представления, функции и хранимые процедуры.

вы лучше редакцию сервера зацените.
cdc
Система отслеживания изменений в данных доступна только в следующих выпусках: Enterprise, Developer и Evaluation SQL Server.

это вроде вы в редакциях плавали недавно?
дороже Энтерпрайза не придумаешь


Я видел. Да я плавал. Все равно данный метод мне не подходит. И не из-за редакции.
30 окт 15, 09:29    [18347266]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mih_dim
Притом они должны быть в том же формате что и возвращает функция в ddl-триггере.

Хосподи
- создай пустую базу
- создай триггер DDL
- выполни все нужные CREATE
30 окт 15, 09:30    [18347270]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
нашел бабушкин скрипт
дифф объектов БД по боевой базе не смотрят
храните скрипты и/или модель в системе контроля версий


А что в MS SQL SERVER есть система контроля версий? Можно ссылку на описание.

автор
Подскажите есть ли системная функция или процедура, которая покажет что было до изменения структуры?

есть: сначала создаем триггер, потом накатываем структуру.

База уже есть с данными. И структура уже создана. так что не подходит.

как вариант, можно сделать эмуляцию на другой пустой базе:
со своей базы получить скрипты создания всего,
на пустой базе создать триггер, накатить мега-скрипт,
из лога перелить в основную базу

по ним не нужно смотреть "что было", по ним нужно отслеживать события внесения изменений: кто когда чего накатывал/альтерил

cdc... "чтобы снести что-нибудь ненужное, надо сначала настроить что-нибудь ненужное" - если только в этом ключе.[/quot]

Хорошо. Как вариант подойдет. Как создать скрипт по созданию всего?
30 окт 15, 09:38    [18347296]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Mih_dim
Как создать скрипт по созданию всего?

Найди в студии кнопку Scripting
30 окт 15, 09:40    [18347310]     Ответить | Цитировать Сообщить модератору
 Re: Логгирование изменения структуры базы данных (что было до изменений)  [new]
Mih_dim
Member

Откуда:
Сообщений: 145
Glory
Mih_dim
Что мда?
Да ты капитан очевидность.
И так в курсе что должен создать таблицу куда будет логгироваться изменения и написать триггер (тем боле он уже мною написан). Я не спрашивал что делать, я спрашивал есть ли готовый запрос(или подобный запрос, чтобы не с нуля писать и разбираться) на сохранения текущего состояния структуры базы данных в таблицу или как получить данные до изменения подругому?

И мне нужно логгировать не только таблицы, но и представления, хранимые процедуры и функции.

Для шибко умных рядовых
"Готовый скрипт на сохранения текущего состояния структуры базы" есть в меню студии. Называется он Scipting
А просто умные люди для " получить данные до изменения подругому" используют специальное ПО. Которое так и называется - система контроля версий.


Спасибо мой генерал. Поищу в студии Scipting. Стороннего ПО мне не надо. Мне нужно стандартными средствами MS SQL
30 окт 15, 09:41    [18347313]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить