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

Откуда:
Сообщений: 2059
Здравствуйте!

Скажите, Microsoft SQL Server Studio фиксирует, что какие то таблицы добавлялись или удалялись? То есть возможно ли узнать что какая таблица была удалена, а также кем удалена?
15 янв 18, 08:58    [21106402]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Кусочек
Guest
Вы имеете ввиду SQL Server Management Studio (SSMS)?

Тогда ответ - нет.

SSMS - это всего лишь одно из клиентских приложений.

Создаются и удаляются таблицы на сервере.
15 янв 18, 09:06    [21106410]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
ferzmikk
Member

Откуда:
Сообщений: 2059
Даже если на сервере, то тогда как можно узнать?
15 янв 18, 09:08    [21106414]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
ferzmikk
Здравствуйте!

Скажите, Microsoft SQL Server Studio фиксирует, что какие то таблицы добавлялись или удалялись? То есть возможно ли узнать что какая таблица была удалена, а также кем удалена?

SSMS - это клиент. Он формирует напечатанный Вами текст и преобразует в команду "drop table". Сооветственно - если у Вас включена каким-либо образом история Ваших запросов, то у злоумышленника, который стер таблицу, история или выключена, или стерта, или он вообще не через SSMS таблицу удалил.

Поэтому правильный вопрос - как организовать логирование DDL и DCL команд на сервере для нужной базы данных, не включая лишнее логирование для DML команд. Это можно найти поиском в этой ветке форума. Удачи.

P.S.
А таки еще более правильный вопрос - как правильно отобрать у потенциальных злоумышленников права на удаление нужных таблиц,
оставив минимально допустимые для работы.
15 янв 18, 09:09    [21106422]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
ferzmikk
Даже если на сервере, то тогда как можно узнать?

Никак. Если таблица стерта - ищите ее в бэкапе. Если человек имел право удалить таблицу - значит, он владелец БД и может в своем праве делать с ней все, что хочет. И почему Вы решили контролировать его действия - непонятно...
15 янв 18, 09:10    [21106426]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
ferzmikk
То есть возможно ли узнать что какая таблица была удалена, а также кем удалена?

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

Перевожу на русский язык - "поздно пить боржоми, когда почки отказали".
15 янв 18, 09:13    [21106432]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Кусочек
Guest
ferzmikk
Даже если на сервере, то тогда как можно узнать?


Не путайте сервер баз данных и клиентскую программу (не важно где она запущенна) для удобного визуального управления им.

Как сделать Andy_OLAP уже Вам ответил.

Andy_OLAP
Поэтому правильный вопрос - как организовать логирование DDL и DCL команд на сервере для нужной базы данных, не включая лишнее логирование для DML команд. Это можно найти поиском в этой ветке форума. Удачи.

P.S.
А таки еще более правильный вопрос - как правильно отобрать у потенциальных злоумышленников права на удаление нужных таблиц,
оставив минимально допустимые для работы.
15 янв 18, 09:15    [21106438]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
ferzmikk
Member

Откуда:
Сообщений: 2059
База данных не рабочая, а тестовая.
15 янв 18, 09:32    [21106493]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
ferzmikk
Member

Откуда:
Сообщений: 2059
Спасибо!
15 янв 18, 09:33    [21106495]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Andy_OLAP
ferzmikk
Даже если на сервере, то тогда как можно узнать?

Никак. Если таблица стерта - ищите ее в бэкапе. Если человек имел право удалить таблицу - значит, он владелец БД и может в своем праве делать с ней все, что хочет. И почему Вы решили контролировать его действия - непонятно...


то есть?
15 янв 18, 12:44    [21107232]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
ferzmikk
Member

Откуда:
Сообщений: 2059
В общем разобрался. Еще в аксапте работаю. Имя таблицы в аксапте не соответсвует имени таблицы в Microsoft SQL Server. Поэтому сперва подумал может кто то удалил таблицу и в связи с этим появился вопрос.
15 янв 18, 13:32    [21107511]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
256k
Andy_OLAP
пропущено...

Никак. Если таблица стерта - ищите ее в бэкапе. Если человек имел право удалить таблицу - значит, он владелец БД и может в своем праве делать с ней все, что хочет. И почему Вы решили контролировать его действия - непонятно...


то есть?

Расшифрую. Есть таблица table_1. И есть человек, который имеет право удалить только ее одну. И ничего более. В БД есть логика, которая с помощью dynamic sql на лету записывает в table_2, table_3 и так далее что-то из table_1. И как только ее удалили - все сломалось. И не отловить, потому что set @string = N'insert into table_3 (...) select ... from table_'+convert(nvarchar(1),@id1)+',table_'+convert(nvarchar(1),@id2).
И получается, что этот человек - владелец БД, потому что всех "держит за яйца" своей недрогнувшей рукой. Вот такой некошерный расклад.

Но все хорошо, что хорошо заканчивается - у автора темы база тестовая, а не боевая, сейчас он на ней права доступа обкатает и колючим забором все ценное внутри обнесет. Плюс к этому таблица не потерялась, просто название перепутал он.
15 янв 18, 15:39    [21108138]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Andy_OLAP
256k
пропущено...


то есть?

Расшифрую. Есть таблица table_1. И есть человек, который имеет право удалить только ее одну. И ничего более. В БД есть логика, которая с помощью dynamic sql на лету записывает в table_2, table_3 и так далее что-то из table_1. И как только ее удалили - все сломалось. И не отловить, потому что set @string = N'insert into table_3 (...) select ... from table_'+convert(nvarchar(1),@id1)+',table_'+convert(nvarchar(1),@id2).
И получается, что этот человек - владелец БД, потому что всех "держит за яйца" своей недрогнувшей рукой. Вот такой некошерный расклад.

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



Т.е. логика: если юзер имеет право удалить таблицу - значит он владелец БД?
15 янв 18, 16:20    [21108354]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
user11111
Guest
ferzmikk
Даже если на сервере, то тогда как можно узнать?

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/default-trace-enabled-server-configuration-option
15 янв 18, 16:29    [21108395]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Ролг Хупин
Andy_OLAP
пропущено...

Расшифрую. Есть таблица table_1. И есть человек, который имеет право удалить только ее одну. И ничего более. В БД есть логика, которая с помощью dynamic sql на лету записывает в table_2, table_3 и так далее что-то из table_1. И как только ее удалили - все сломалось. И не отловить, потому что set @string = N'insert into table_3 (...) select ... from table_'+convert(nvarchar(1),@id1)+',table_'+convert(nvarchar(1),@id2).
И получается, что этот человек - владелец БД, потому что всех "держит за яйца" своей недрогнувшей рукой. Вот такой некошерный расклад.

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



Т.е. логика: если юзер имеет право удалить таблицу - значит он владелец БД?

Владелец в понимании SQL - это db_owner, а тут речь о совладельце. Если имеет право базу порушить вместе с ее логикой работы - значит, владелец. Не придирайтесь к терминологии, Вы же поняли, о чем речь идет.
15 янв 18, 17:03    [21108540]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Alexander Us
Member

Откуда:
Сообщений: 1130
ferzmikk
Здравствуйте!

Скажите, Microsoft SQL Server Studio фиксирует, что какие то таблицы добавлялись или удалялись? То есть возможно ли узнать что какая таблица была удалена, а также кем удалена?


How to find user who ran DROP or DELETE statements on your SQL Server Objects
16 янв 18, 11:33    [21109931]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Alexander Us
How to find user who ran DROP or DELETE statements on your SQL Server Objects

кроме того, что искать в логе базы в простой модели события дней минувших -- занятие бессмысленное,
не подскажете, как именно идентифицировть дропнутую таблицу?
допустим, у меня 100 таблиц были удалены разными личностями,
я поищу в логе на [Transaction Name] = 'DROPOBJ', получу 100 строк.
и как мне из них выбрать именно ту, что к моей таблице относится?
16 янв 18, 11:45    [21109975]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про Microsoft SQL Server Studio  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Andy_OLAP
Ролг Хупин
пропущено...



Т.е. логика: если юзер имеет право удалить таблицу - значит он владелец БД?

Владелец в понимании SQL - это db_owner, а тут речь о совладельце. Если имеет право базу порушить вместе с ее логикой работы - значит, владелец. Не придирайтесь к терминологии, Вы же поняли, о чем речь идет.


Вы сбиваете с ритма весь квартал (ц)
16 янв 18, 12:23    [21110120]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить