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

Откуда: Moscow
Сообщений: 28168
Kyvaldenius
alexeyvg
пропущено...
Для десктопных приложений используют Windows - авторизацию, другое использовать глупо.

И тогда логирование решается просто, как я написал - "просто пишите записи в лог".

но тогда есть зависимость от AD отдельно группу выделять для тех кто работает с БД , как быть с пользователями которые нет в сети например у них Linux стоит начинаются тогда уже проблемы администрирования
Вы же писали, что логин не зашит, то есть используется Win авторизация.

Впрочем, неважно, раз у вас чудесное WinForms приложение, работающее из Линукса...

Если вы используете Windows авторизацию, то используйте для логирования тот логин, под которым пользователь авторизовался.
Если вы не используете Windows авторизацию, то используйте для логирования CONTEXT_INFO
10 апр 19, 16:44    [21858599]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Kyvaldenius
alexeyvg
пропущено...
Тогда в чём проблема?
Записываете при логировании логин, под которым пользователь залогинился в виндах.
Передавать его никуда не надо, он всегда доступен из SQL
тогда это используется SQL авторизация

так точка входа у всех одинаковая.
Это и называется "логин зашит в код приложения". Даже если он зашит в конфиг или как то ещё.

Тогда только CONTEXT_INFO
10 апр 19, 16:45    [21858601]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
alexeyvg
Kyvaldenius
пропущено...
тогда это используется SQL авторизация

так точка входа у всех одинаковая.
Это и называется "логин зашит в код приложения". Даже если он зашит в конфиг или как то ещё.

Тогда только CONTEXT_INFO


Спасибо,
буду разбираться с CONTEXT_INFO я правильно он принимает значения вида

SET CONTEXT_INFO 0x01010101;

то есть записать "Admin" не получится только использовать тип binary или varbinary
10 апр 19, 16:52    [21858606]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
МуМу
Member

Откуда:
Сообщений: 1072
Вот воды налил автор топика. Вам уже все разжевали. Может windows NT аторизацию использовать , можете пользователя SQL создавать для каждого пользователя(есть еще апликейшин роли но вам это вряд ли понадобиться), можете в сервере приложения или чего там у вас писать в линковочную таблицу соответствие актуальное SPID - Пользователь каждый раз при смене контекста. В 1С например пишется в справочник(сами создайте) Пользователь с помощью ПриНачалеРаботыСистемы а в доп. поле @@spid прописывается автоматом, только еще времянку таблицу надо создавать что бы 1С контекст не переключала. В самописной системе я не знаю чего как у вас реализовано.
10 апр 19, 16:53    [21858607]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Kyvaldenius
то есть записать "Admin" не получится только использовать тип binary или varbinary
По разному молжно делать
Вообще, у вас же пользователи авторизованы, пусть и по-своему, значит, нужно писать их ID, а не имя.
Но можно и имя, строка прекрасно конвертится в varbinary и обратно
10 апр 19, 16:56    [21858613]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
МуМу
Вот воды налил автор топика. Вам уже все разжевали. Может windows NT аторизацию использовать , можете пользователя SQL создавать для каждого пользователя(есть еще апликейшин роли но вам это вряд ли понадобиться), можете в сервере приложения или чего там у вас писать в линковочную таблицу соответствие актуальное SPID - Пользователь каждый раз при смене контекста. В 1С например пишется в справочник(сами создайте) Пользователь с помощью ПриНачалеРаботыСистемы а в доп. поле @@spid прописывается автоматом, только еще времянку таблицу надо создавать что бы 1С контекст не переключала. В самописной системе я не знаю чего как у вас реализовано.


Вам уже все разжевали. Может windows NT аторизацию использовать , можете пользователя SQL создавать для каждого пользователя(есть еще апликейшин роли но вам это вряд ли понадобиться),--- это я описал в первом сообщении )

линковочную таблицу соответствие актуальное SPID - Пользователь каждый раз при смене контекста-- вот по этому и были/есть вопросы

например пишется в справочник(сами создайте) --- примеры кода скинул



Пользователь с помощью ПриНачалеРаботыСистемы а в доп. поле @@spid прописывается автоматом, только еще времянку таблицу надо создавать что бы 1С контекст не переключала..-----вот по большому мне это и надо но как это реализовать ? пример а не текст)


В самописной системе я не знаю чего как у вас реализовано -- я говорил что пишется с нуля по это му такой подход интересен и как его реализовывать конкретно ( тоесть по каким полям сверять надо, в какой момент....) а не просто текст )
10 апр 19, 16:58    [21858617]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
МуМу
Member

Откуда:
Сообщений: 1072
Ну не ленитесь - напишите. Будут конкретные вопросы - задавайте. Мне например лениво для вас код писать.(к тому же я не знаю какая там система, апликейшен сервер или чего там, к тому же на c# я читатель а не писатель) Но я вам рассказываю как уже делали и как работает.
10 апр 19, 17:09    [21858632]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 3878
Kyvaldenius
a_voronin
Kyvaldenius,

Можете поставить Вертику, там все по умолчанию темпорально. Или посмотреть, что такое якорная модель или data vault.



в место решения конкретной возникшей задачи вы предлагаете полностью поменять СУБД , или архитектуру бд ?


Здесь нет конкретной задачи. Здесь стоит задача перехода на темпорал, прочем не локально, а непонятно в каком объеме.

"Необходимо сделать историю изменений данных которая хранит сами данные действие время и пользователь который совершил действие"

Это явно переход на Хранилище Данных и здесь напрашивается смена архитектуры. И после попыток "решить конкретную задачу" она рано или поздно произойдет.
10 апр 19, 18:44    [21858694]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
a_voronin
Здесь нет конкретной задачи. Здесь стоит задача перехода на темпорал, прочем не локально, а непонятно в каком объеме.
По моему, тут не "тепорал", а логировангие на всякий случай в общих чертах, причём "если не запишется, ну и ладно".
10 апр 19, 19:01    [21858709]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
iap
Member

Откуда: Москва
Сообщений: 46656
Эту статью с нашего форума читал кто-нибудь?
Нет? Эх вы! Молодёжь...
10 апр 19, 20:43    [21858790]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
МуМу
Ну не ленитесь - напишите. Будут конкретные вопросы - задавайте. Мне например лениво для вас код писать.(к тому же я не знаю какая там система, апликейшен сервер или чего там, к тому же на c# я читатель а не писатель) Но я вам рассказываю как уже делали и как работает.


Ну не ленитесь - напишите. не понял к чему это ?
11 апр 19, 09:19    [21858948]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
МуМу
Ну не ленитесь - напишите. Будут конкретные вопросы - задавайте. Мне например лениво для вас код писать.(к тому же я не знаю какая там система, апликейшен сервер или чего там, к тому же на c# я читатель а не писатель) Но я вам рассказываю как уже делали и как работает.


можете по подробней рассказать про "писать в линковочную таблицу соответствие актуальное SPID - Пользователь каждый раз при смене контекста"
11 апр 19, 09:25    [21858955]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
ldfanate
Member

Откуда:
Сообщений: 79
автор
Эту статью с нашего форума читал кто-нибудь?

О, самый ценный ответ!
11 апр 19, 09:29    [21858956]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
invm
Member

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

Вам ранее уже все было разжевано на другом форуме. Но, видимо, не доходит...

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

В конечно итоге, при вашем подходе и после реализации вышеописанного, получите выполнение этой актуализации при каждом чихе в сторону БД...
11 апр 19, 10:19    [21858996]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
invm
Kyvaldenius,

Вам ранее уже все было разжевано на другом форуме. Но, видимо, не доходит...

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

В конечно итоге, при вашем подходе и после реализации вышеописанного, получите выполнение этой актуализации при каждом чихе в сторону БД...


спасибо за комментарий

сильно сказано "говнокоде" можете подсказать пример/ссылку/статью о правильном коде ?? )
15 апр 19, 16:13    [21862723]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
от себя хочу добавить, заметил интересную особенность как отвечают на вопрос в подобных форумах хочу ими поделиться так как накипело

1) предлагать изменить язык программирования/ субд/ архитектуру приложения
2) изменить подход в данном случае к авторизации ( что интересно в другой ветке форума где спрашивал какой метод авторизации лучше использовать советовали "самописный" )
3) самое главное не читать ответы от создателя вопроса
4) описывать механизмы работы без какого либо материала ( так в голове придумывается сферический конь с которым все прекрасно работает)


отдельно спасибо alexeyvg и iap за самые адекватные ответы и ссылки на статьи
15 апр 19, 16:22    [21862745]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36096
Kyvaldenius,

Ну да, адекватные люди на вопрос "как и чем посильнее расшибить голову" обычно не кидаются советовать как именно и чем именно: все таки людям чаще свойственна эмпатия.
15 апр 19, 16:30    [21862772]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
я не понимаю чем вызван мой вопрос "Варианты логирования изменения данных " такими бурными эмоциями

порой мне кажется что кол-во сообщений составляется из подобных ответов и ни какой конкретики

Гавриленко Сергей Алексеевич
Kyvaldenius,

Ну да, адекватные люди на вопрос "как и чем посильнее расшибить голову" обычно не кидаются советовать как именно и чем именно: все таки людям чаще свойственна эмпатия.
15 апр 19, 16:34    [21862780]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6142
Kyvaldenius
от себя хочу добавить, заметил интересную особенность как отвечают на вопрос в подобных форумах хочу ими поделиться так как накипело

1) предлагать изменить язык программирования/ субд/ архитектуру приложения
2) изменить подход в данном случае к авторизации ( что интересно в другой ветке форума где спрашивал какой метод авторизации лучше использовать советовали "самописный" )
3) самое главное не читать ответы от создателя вопроса
4) описывать механизмы работы без какого либо материала ( так в голове придумывается сферический конь с которым все прекрасно работает)


отдельно спасибо alexeyvg и iap за самые адекватные ответы и ссылки на статьи

каждый кто приходит со своей нетленкой в итоге оставляет подобный перечень
15 апр 19, 16:36    [21862785]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
TaPaK
Kyvaldenius
от себя хочу добавить, заметил интересную особенность как отвечают на вопрос в подобных форумах хочу ими поделиться так как накипело

1) предлагать изменить язык программирования/ субд/ архитектуру приложения
2) изменить подход в данном случае к авторизации ( что интересно в другой ветке форума где спрашивал какой метод авторизации лучше использовать советовали "самописный" )
3) самое главное не читать ответы от создателя вопроса
4) описывать механизмы работы без какого либо материала ( так в голове придумывается сферический конь с которым все прекрасно работает)


отдельно спасибо alexeyvg и iap за самые адекватные ответы и ссылки на статьи

каждый кто приходит со своей нетленкой в итоге оставляет подобный перечень



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

1) предлагать изменить язык программирования/ субд/ архитектуру приложения .....
15 апр 19, 16:38    [21862789]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
invm
Member

Откуда: Москва
Сообщений: 8489
Kyvaldenius
сильно сказано "говнокоде"
Вещи названы своими именами.

1. Про using вам уже писали.
2. Помедитируйте над тем, как вы узнаете об ошибке, если таковая случится при выполнении cmd.ExecuteNonQuery(). Также поразмышляйте зачем, наряду с catch, есть еще и finally.
15 апр 19, 16:54    [21862812]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Kyvaldenius
мне казалось что это обычный вопрос и тут сидят великие гуру которые точно делали подобное и подскажут как правильно построить данный механизм
Тут на самом деле попадаются люди, которые за несколько десятилетий много раз делали такую функциональность.
Но, во первых, исходная формулировка немного непонятна. То ли про темпоральные данные, то ли про логирование, то ли про авторизацию для коннекта к сиквелу, то ли про систему управления правами своих объектов...
Во вторых, так как есть частные вопросы, то на них даются ответы. Хотя эти вопросы (и, получается, ответы) не имеют отношения к топику. Это следствие п.1
В третьих, нету одного шаблона, высеченного в граните, такие задачи можно решать по разному. Поэтому разные советы. Впрочем, совет концептуально получился один - прямо передавать нужные данные (в данном случае идентификатор пользователя). Без всяких там "сопоставлений spid". Как передавать - от контекта, до обязательного параметра в процедурах, это у всех по разному.
invm
2. Помедитируйте над тем, как вы узнаете об ошибке, если таковая случится при выполнении cmd.ExecuteNonQuery(). Также поразмышляйте зачем, наряду с catch, есть еще и finally.
О, ужас, поубивал бы всех, кто тупо гасит ошибки!!!
15 апр 19, 17:38    [21862873]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
invm
Kyvaldenius
сильно сказано "говнокоде"
Вещи названы своими именами.

1. Про using вам уже писали.
2. Помедитируйте над тем, как вы узнаете об ошибке, если таковая случится при выполнении cmd.ExecuteNonQuery(). Также поразмышляйте зачем, наряду с catch, есть еще и finally.




1. Про using вам уже писали.- то что conn.Close(); вручную а не само по средствам using?
2. не совсем понятно , ошибка попадает в блок catch записывается в логи и сообщает пользователю не понятно зачем finally или
не понимаю что в этом критичного, если можно по подробней
16 апр 19, 10:07    [21863323]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28168
Kyvaldenius
2. не совсем понятно , ошибка попадает в блок catch записывается в логи и сообщает пользователю не понятно зачем finally или
не понимаю что в этом критичного, если можно по подробней
invm написал про этот код:
catch (Exception ex)
{
    if (conn.State == System.Data.ConnectionState.Open)
    {
        conn.Close();
    }
}
Код кривой, ничего он не сообщает, а просто молча гасит ошибку.

Даже если у вас где то будет обработка по res = false, всё равно это только констатация факта ошибки, но инфа о ней будет потеряна.

Конечно, может, вы просто не приводили полный код, но смотрят же на тот, который есть.
16 апр 19, 10:18    [21863337]     Ответить | Цитировать Сообщить модератору
 Re: Варианты логирования изменения данных  [new]
Kyvaldenius
Member

Откуда:
Сообщений: 107
alexeyvg
Kyvaldenius
мне казалось что это обычный вопрос и тут сидят великие гуру которые точно делали подобное и подскажут как правильно построить данный механизм
Тут на самом деле попадаются люди, которые за несколько десятилетий много раз делали такую функциональность.
Но, во первых, исходная формулировка немного непонятна. То ли про темпоральные данные, то ли про логирование, то ли про авторизацию для коннекта к сиквелу, то ли про систему управления правами своих объектов...
Во вторых, так как есть частные вопросы, то на них даются ответы. Хотя эти вопросы (и, получается, ответы) не имеют отношения к топику. Это следствие п.1
В третьих, нету одного шаблона, высеченного в граните, такие задачи можно решать по разному. Поэтому разные советы. Впрочем, совет концептуально получился один - прямо передавать нужные данные (в данном случае идентификатор пользователя). Без всяких там "сопоставлений spid". Как передавать - от контекта, до обязательного параметра в процедурах, это у всех по разному.
invm
2. Помедитируйте над тем, как вы узнаете об ошибке, если таковая случится при выполнении cmd.ExecuteNonQuery(). Также поразмышляйте зачем, наряду с catch, есть еще и finally.
О, ужас, поубивал бы всех, кто тупо гасит ошибки!!!


согласен что по началу формулировка получилась путанной но как мне кажется если стоит вопрос о записи истории с указанием пользователя то явно с этим связанна авторизация ( о чем указал что авторизация самописная ) и ключевое это получить пользователя

"1)Создать собственные таблицы для управления авторизацией ( пользователи/ группы/ объекты) и продумать действия по работе сними ( шифрование пароля/ разделение прав/объектов)

+ все в твоих руках
- не понятно как быть с логированием данных: а именно с логином пользователя
то есть стандартные функции mssql будут показывать учетку / или имя входа в MS sql
приходится делать промежуточные таблицы где есть свои проблемы (Лог изменений данных)"
16 апр 19, 10:19    [21863340]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить