Ответы пользователя по тегу SQL Server
  • Как правильно создать триггер в MS SQL?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Начать надо с того, что триггер тут не нужен. Если же сделать еще и по первому варианту, что вам советовали - то это вообще кошмар, потому что там еще и курсор в триггере. Никогда не делайте курсор в триггере.
    Второй вариант - меньший, но тоже кошмар.

    "Критикуя - предлагай".

    Предлагаю. Проверить, есть ли такая запись во второй таблице - надо с помощью простого foreign key. Т.е. надо просто таблицы связать, поле не должно быть NULL и больше НИЧЕГО, никакие триггера не городить.
    Ответ написан
    Комментировать
  • Как сделать триггер, который не позволит дублировать данные?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    1. по типу триггера уже сказали. Иначе не так идет то, что строка на момент проверки уже добавлена и, естественно, exists отрабатывает правильно всегда.
    2. Триггер выполняется для каждой строки (поэтому-то уникальность и не надо им проверять), отсюда @rowcount = 1 бесполезен.
    3. Триггер нужен не на insert, но на insert, update
    Ответ написан
    Комментировать
  • Как проектировать Хранилища данных?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Макс, вставка в обоих случаях будет в одну таблицу, не делается вставка данных сразу в кучу - ну, обычно. Если делается, то вставка оборачивается в транзакцию. Ответ на вопрос уже должен быть очевидным, да?
    И еще. Вставка тормозит тогда, когда есть индексы. Потому что эти индексы пересчитываются.

    Пихать все данные в одну таблицу - учиться плохому. Особенно если она большая.
    Ответ написан
  • Как через try catch исправить ошибку и вернуться в начало try?

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

    А те, которые в целевой присутствуют, следующим шагом обработать и опять же пачкой вставить.
    Никакого try catch не нужно вообще.
    Ответ написан
    Комментировать
  • MSSQL - что за кэш может быть?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Чудес, Золушка, не бывает. Копаете вы вообще не туда. Если запись не находится через поиск в CRM, значит, поиск ее не видит (неожиданно, но факт), а не индекс кривой, не тот и т.п.

    Какие могут быть варианты? Скорее всего, есть некий признак, который штатно ставится, а вы его при ручной вставке забыли/не учли. Поглядите, как именно идет поиск, что в условии WHERE - и там копайте.
    Смотрите профайлером, так сразу станет видно, что за поиск отвечает.

    Да, и сначала стоит быть абсолютно уверенным, что запись в таблице есть, и главно - именно в той, по какой идет поиск.
    Ответ написан
    3 комментария
  • MSSQL - что за guid номера?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Правой кнопкой по таблице. Потом поля. Встать на нужное, и посмотреть, какой именно фукнцией оно формируется (хотя уже написано, какой) - и если оно там стоит, то не париться за уникальность, сформируется само.

    Если же не стоит значение по умолчанию, значит, это поле заполняется из процедуры/фунции при вставке замене. Где - надо искать.

    Код, который формирует записи, почему вдруг посмотреть нельзя? Профайлер запустить невозможно, что ли?
    Ответ написан
    3 комментария
  • Что выбрать для разработки?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Не менять Access 2010. Поддержка adp в более старших версиях прекратилась, очень многие разработчики далее не идут поэтому. И вообще это нормальная, стабильно работающая система - я бы не рекомендовал от 2010 уходить.
    Ответ написан
    Комментировать
  • Почему не записывается кириллица в поле типа text MS-SQL?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    использовать правильные типы для хранения данных. если в поле адрес всего-то вон 30 символов на взгляд, на кой делать его text? Текст, вопреки названию, для хранения баааааальшого количества данных предназначен.
    Ответ написан
    Комментировать
  • Эффективно ли составлен запрос на получение первых нескольких записей из БД с использованием JOIN?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Доброго. На мой взгляд - изврат. Вот это вот создание временной таблицы из groups, потом джойн с тем же groups её...

    SELECT TOP(3) GroupID FROM Groups g
    LEFT JOIN Users u ON u.GroupID = g.ID
    WHERE Replicated <> 1;

    Все. Вот ваши три записи, любые несинхронизированные. Поля нужные из обеих таблиц вставьте самостоятельно. И второе - откройте для себя таинство команды select ... output ...
    Ответ написан
  • Как вызвать функцию с ms sql сервера из access?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Доброго.
    В такой постановке: 1 вариант прост и не требует дополнительных телодвижений. Что в нем не нравится, зачем нужен второй?

    Меня лично смущает: "к полю в акцессе". А почему, собственно, не сделать stored procedure с параметрами, из акцесса формировать строку, и выполнять вообще всё, а не конкретно апдейт одного поля, на стороне сервера?
    Ответ написан
  • Возможно ли создать системную функцию в MS SQL Server?

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

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Зачем Primary key стоит на обоих полях? В таблице Users не нужно это, обычный int и все.
    Ответ написан
    Комментировать
  • Как перенести БД с Access на SQL Server?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Не использовать мастер преобразования, а использовать в sql server - импорт данных.
    Правой кнопкой по базе, Tasks, Import data.
    Ответ написан
    Комментировать
  • В чем разница объявления таблицы через @ и через # в ms sql?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    e1s: через ## - тогда будет видна другим. Однако использование временных таблиц такого рода часто говорит о том, что ее просто надо сделать постоянной. Надо понимать, что создание и удаление таблиц - ресурсоемкое дело и лучше бы их не использовать, кроме тех мест, где это реально необходимо.
    Зачастую временную таблицу можно заменить запросом типа select myfield from (select id_table from mytable) либо используя cte - последний способ весьма хорош, если подобная "временная таблица" будет использоваться в процедуре часто.

    Не стоит так же забывать про индексы на временные таблицы.
    Ответ написан
    Комментировать
  • Как ускорить множество INSERT в Mysql?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Конечно. Не делать это в цикле, а делать пакетно. Кстати, хорошо бы код показывать и объяснять, зачем такой цикл необходим.
    Ответ написан
  • Делаю Insert в цикле, прописано условие окончания цикла, но почему-то не кончается?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Ну, почему не ограничивается 20 - это вообще на поверхности, проверка-то вне цикла, а должна быть в нем.
    Но делать так не есть верно - count достаточно тяжелая операция, и если к тому же там будут тысячи строк...

    Переменную объявить и ее приращивать
    DECLARE @i INT = 0;
    тут цикл
    if @i > 20 -- тут проверка
    set @i = @i + 1; -- тут увеличение
    И никакого дерганья сервера лишний раз. Это первый момент.
    Второй момент - если надо просто тестовыми данными заполнить таблицу, то существуют решения, которые не просто это делают, но и генерят что-то похожее на реальные данные, это удобней, имхо. Тот же ToolBelt можно посмотреть.
    Ответ написан
  • Бесплатное ПО для эффективной работы с SQL?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Express версия имеет ограничения все же, а вот MS SQL Developer Edition нынче стала бесплатной, с 2014 версии. Абсолютно все возможности Enterprise версии в ней есть.

    Для начала - возможностей самой студии более чем достаточно. Если не складывается с ней - неплохие программы для работы с базами данных, в русских версиях бесплатные, делает devart.com
    Ответ написан
    Комментировать
  • Как конвертировать строку (в строке timestamp) в дату в ms sql?

    @art_karetnikov
    Лучший мой проект: Мобильный банк Сбербанка РФ.
    Что значит - "безрезультатно"? Данные вам такой запрос вернет, будет 1900 год.
    Ответ написан
    7 комментариев
  • Как правильно задать параметры в запросе?

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

    Для поля STAMP
    возьми значение из поля [NotifyManagerTimestamp]
    Поэтому и ошибка. Вам о ней и пишут: поле такое не найдено. Если вы хотите использовать переменную, то это вот так: @NotifyManagerTimestamp
    Ответ написан
    3 комментария
  • SQL, кто либо может помочь?

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