• Как организовать мониторинг изменения уровня прав пользователя в MSSQL Server?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Конечно, можно. Почитайте про триггеры DDL.
    Ответ написан
    Комментировать
  • Почему VS не дает управлять SQL сервером?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    зайди как sa. А сейчас у тебя прав, скорее всего, нет. :) Very easy :)
    Ответ написан
  • Где взять список хороших и плохих слов?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    поискать словари синонимов и по ним прогнать потом свой набор? Знаю как минимум одного разработчика, у которого такие словари есть уже в виде базы - solarix, сверх того - и погуглить можно. :)
    Ответ написан
    Комментировать
  • Отслеживание изменений кода хранимых процедур, функций и таблиц в MSSQL

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Вообще элементарно. Триггер на базу.

    Шаг первый:

    CREATE TABLE [dbo].[tbl_ListChange](
    [LoginName] [varchar](2000) NULL,
    [HostName] [varchar](100) NULL,
    [ObjectName] [varchar](100) NULL,
    [ObjectType] [varchar](100) NULL,
    [EventType] [varchar](100) NULL,
    [EventSQLCommand] [varchar](max) NULL,
    [EventTime] [datetime] NOT NULL,
    [XMLChange] [xml] NULL,
    [Id] [int] IDENTITY(1,1) NOT NULL,
    CONSTRAINT [PK_tbl_ListChange] PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    EXEC sys.sp_addextendedproperty name=N'MS_Description', value=N'Полностью xml команда, содержащая все вообще ', @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'tbl_ListChange', @level2type=N'COLUMN',@level2name=N'XMLChange'
    GO

    Шаг второй: — триггер на базу:

    CREATE TRIGGER [tgr_DDLListChange]
    ON DATABASE
    FOR DDL_DATABASE_LEVEL_EVENTS
    AS

    — Каретников. 25-03-2010. Мониторинг всех изменений в базе

    SET NOCOUNT ON

    DECLARE @dataXML XML
    SET @dataXML = EVENTDATA() — получил данные по текущему событию.

    IF (
    SELECT @dataXML.value('(/EVENT_INSTANCE/ObjectName)[1]' ,'varchar(max)')
    ) IS NOT NULL
    BEGIN
    INSERT dbo.tbl_ListChange
    (
    LoginName — под чьим логином
    ,HostName — на чьей машине
    ,ObjectName — что изменено
    ,ObjectType — тип измененного обьекта
    ,EventType — тип изменения
    ,EventSQLCommand — полностью SQL команда
    ,EventTime — во сколь изменено
    ,XMLChange — полностью вся хмл-команда
    )
    VALUES
    (
    @dataXML.value('(/EVENT_INSTANCE/LoginName)[1]' ,'varchar(2000)') — под чьим логином
    ,HOST_NAME() — на чьей машине
    ,@dataXML.value('(/EVENT_INSTANCE/ObjectName)[1]' ,'varchar(100)') — что изменено
    ,@dataXML.value('(/EVENT_INSTANCE/ObjectType)[1]' ,'varchar(100)') — тип измененного обьекта
    ,@dataXML.value('(/EVENT_INSTANCE/EventType)[1]' ,'varchar(100)') — тип изменения
    ,@dataXML.value('(/EVENT_INSTANCE/TSQLCommand)[1]' ,'varchar(max)') — полностью SQL команда
    ,GETDATE()
    , @dataXML
    ) — во сколь изменено
    END


    GO
    Ответ написан
    Комментировать
  • Почему в mysql workbench нет вкладок для результатов запроса?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Попробуйте dbForge Studio for MySQL — есть бесплатная версия, её возможностей более чем хватает — она с лихвой перекрывает все нужды и весьма гибко настраивается. Сам перебрал с десяток инструментов, прежде чем выбрал этот.
    Ответ написан
    1 комментарий
  • Microsoft Access: разработка запросов с сортировкой и группировкой как в sql сервере?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Если запрос не позволяет редактировать данные — в вашем случае я бы поставил на то, что запрос составлен не корректно, а, к примеру, нет ключевых полей и ему просто не понятно — какую именно таблицу надо обновлять.

    Как связать — конечно же, добавить ключ и в одном, и в другом запросе. У вас же он есть, ну — должен быть, при нормальной структуре.

    Id_Client всяко должен быть в заказе клиента. Id_Client не может не быть в информации о клиенте. В заказе это просто индексированное поле, в информации — primary key. Вяжите по ним. Если оба поля — int, все будет летать.
    Ответ написан
    Комментировать
  • Microsoft Access: разработка запросов с сортировкой и группировкой как в sql сервере?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    1. Делаем главную форму. В ней у вас — ну пусть список клиентов. и id клиента
    2. Делаем подчиненную форму — в ней запрос с id клиента. По этим двум id связываете обе этих формы, по-моему, даже мастер это умеет.
    далее при перемещении по строкам главной формы — автоматически будете попадать на такие же id во второй. Обе формы табличные. И можно редактировать прямо в них.
    3. Если уж сил нет, как хочется по двойному клику — ну, ловите событие формы dbl_click и в нем делаете form open.
    Ответ написан
  • Microsoft Access: разработка запросов с сортировкой и группировкой как в sql сервере?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Если вы собираетесь править — то это должна быть форма. Править отчеты невозможно, править в запросах — нелепо.

    Я бы сделал форму и подчиненную форму. Верхняя и две ниже расположенных:

    Список клиентов

    Данные клиента

    Заказы клиента

    Почитайте подробней про подчиненные формы.
    Ответ написан
  • Хранение типизированных данных в базе данных

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Давайте просто вместе подумаем. Во-первых, не обязательно использовать полный инт — сколь там типов статей у вас? TinyInt USIGNED — не перекроет? Во-вторых, если строка у вас варчарная — какой длины? Если четыре символа — можно и не заметить. А выше — имнсхо, надо использовать число.
    Предполагаю с высокой вероятностью еще и то, что вам нужна будет выборка — и не только по этому полю, скорее, индекс по нескольким. Здесь еще и размер его будет важен.
    Ответ написан
    Комментировать
  • mysql slow insert Медленный запрос insert

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Коллега, есть быстрое решение — заводите еще одну таблицу, short_log, вставляете данные в неё, а фоном — отдельно от того, что нужно делать быстро — переливаете её всю в большую. Это будет пакетная вставка, она выполняется быстрей, чем вставка одной записи, потому что индекс — а мы знаем, что индекс перестраивается достаточно долго — будет перестраиваться один раз. А сейчас у вас это выполняется при вставке каждой строки. \

    Пишете отдельно процедуру, гоняете её каждые 10 минут — если строк в short_log — больше, скажем, 10 тысяч — все из неё заливаете в большой лог.

    Далее. Поля int у вас допускают отрицательные значения — я бы сделал UNSIGNED, вряд ли девайс у вас может иметь отрицательный id
    Далее. Дата — это по сути тот же инт, верно? Давайте его как инт и хранить — и вставлять как инт — съэкономим время на преобразование при перестройке индекса.
    Нужно будет посмотреть реальную дату — выполните обратное преобразование.
    Ответ написан
    5 комментариев
  • Запрос из базы, одно поле — много значений?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Коллега, вы зря используете под это вордпресс и метаполя — там поля типа варчар и без индексов. Через некоторое время это у вас начнет жутко тормозить. Разработайте свою структуру, как правильно — с первичными ключами типа int и так далее.
    Ответ написан
    4 комментария