Информация

Последние записи

Теги


Блоги


Записи из всех блогов на Sql.ru


Сборка КБД

Блог: SQL Server
Постановка задачи

В фирме есть 80 филиалов в 80 городах по РФ с одинаковой по структуре базой данных. В базах данных филиалов порядка 150 таблиц с одинаковым названием, но с разным, своим наполнением, за исключением общих справочников. Все филиалы имеют индивидуальные 2-значные номера. Для каждого филиала выделен свой SQL Server 2008R2 Enterprise edition (x64). Базы данных в филиалах имеют одинаковое название. Филиалы различаются разными IP-адресами и доменными именами. Все сервера БД объединены в единую сеть и единый домен (Active Directory) предприятия. Данные в таблицах филиалов могут как добавляться, так и изменяться и удаляться, изменения могут происходить и за долгий срок от текущего момента времени.

Есть отдельный сервер, где реализована еженедельная сборка данных со всех филиалов в единую корпоративную базу данных (далее будем называть эту БД — ЕКБД по следующему алгоритму:

  • Из файла бэкапа восстанавливается пустая ЕКБД без индексов, но со всеми таблицами и процедурами.
  • С помощью bcp.exe и job SQL Server в ЕКБД загружаются данные в 8 параллельных потоков со всех филиалов.
  • Первичные ключи — идентификаторы в таблицах при загрузке преобразуются по принципу добавления номера филиала в начало. Например, на филиале 17 загружаем с ID = 177, этот ключ в ЕКБД будет — 1700000000177. Т.е. код филиала умножается на 10^N + ID.
  • После загрузки последнего job стартует построение необходимых индексов для работы.
  • Весь процесс загрузки выполняется порядка 1.5-2 суток, при этом ЕКБД во время сборки не доступна.
    читать дальше...
  • автор: Алексей Куренков добавлено: 16 июл 17 просмотры: 266, комментарии: 0



    Остатки на складах - оптимизация, когда нужна и сортировка и поиск.

    Блог: SQL Server
    Остатки на складах

    Постановка задачи

    Задачу необходимо решить на SQL Server 2014 Enterprise Edition (x64).
    В фирме есть много складов. В каждом складе ежедневно по нескольку тысяч отгрузок и приемок продуктов. Есть таблица движений товаров на складе приход/расход. Необходимо реализовать:

    Расчет баланса на выбранную дату и время (с точностью до часа) по всем/любому складам по каждому продукту.
    Для аналитики необходимо создать объект (функцию, таблицу, представление) с помощью которого за выбранный диапазон дат вывести по всем складам и продуктам данные исходной таблицы и дополнительную расчетную колонку — остаток на складе позиции.читать дальше...
    автор: Алексей Куренков добавлено: 30 июн 17 просмотры: 746, комментарии: 2



    Что нам скажет SQL Server ERRORLOG?!


    Что такое ERRORLOG?! Некоторые специалисты, которые сопровождают MS SQL Server первый раз слышат о нем или не подозревают, что он есть.
    ERRORLOG – это журнал MS SQL Server, физически это текстовый файл. По умолчанию он находится в каталоге установке SQL Server в папке Log, к примеру, в «C:\Program Files\Microsoft SQL Server\ MSSQL13.SQL2016\ MSSQL\Log». В нем регистрируются как информационные сообщения, ошибки различной серьезности, пользовательские ошибки информация по dump-ам sql server и другая полезная инфомарция, хотя бывает и не очень полезная.


    Журнал создается каждый раз при запуске службы SQL Server, количество их регулируется настройками в SQL Server, желательно указывать 10 или более на важных системах, т.к при установке обновлений, проблемах при нескольких попытках старта SQL Server, они перезаписываются и в итоге вы можете потерять важную информацию при диагностике сервера.
    Даже при установке обновлений SQL Server, происходит несколько рестартов служб, что так же создает новый журнал.
    В данный журнал записывается информация как об ошибках работы сервера, информация о sql дампах, безопасности, так и информация информационного характера.
    Журналы можно просмотреть несколькими способами:
    1.    
       Через SQL Server Management Studio, вкладка Management -> SQL Server Logs, дважды щелкнув на нужный файл.
    2.       Открыть текстовым любым текстовым редактором из каталог Log.

    Текущий всегда будет без ...
    читать дальше...
    автор: dbasimple добавлено: 30 июн 17 просмотры: 489, комментарии: 0



    Комментарии в блоге queryprocessor.ru

    Публикуя последний пост, заметил несколько комментариев к предыдущим постам, последний из которых датирован аж мартом этого года. Ответил на все, но приношу извинения, т.к. ответил не своевременно.

    Дело в том что из-за постоянных спам атак я отключил уведомления о комментариях. Позже, я купил плагин, который защищает от таких атак и их стало меньше, но уведомления пока так и не включил. Так что я вижу комментарии только тогда, когда захожу в админку сайта, что бывает редко.

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

    Спасибо всем читателям!
    автор: SomewhereSomehow добавлено: 18 май 17 просмотры: 866, комментарии: 0



    SQL Server 2017: Adaptive Query Processing

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

    Эти методы объединяются под общим названием – Adaptive Query Processing, и состоят из трех основных компонентов:

    • Adaptive Memory Grant Feedback
    • Interleaved Execution
    • Adaptive Joins

    Далее мы рассмотрим каждый из этих методов, где они применяются и какой имеют эффект. Для демонстрации примеров я буду использовать SQL Server 2017 CTP 2.0 совместно с SQL Server Management Studio 17.0.

    Читать дальше...


    SQL 2016 – It Just Runs Faster: Automatic Soft NUMA

    По материалам статьи: SQL 2016 – It Just Runs Faster: Automatic Soft NUMA
    30 марта 2016

    Автор: Nitin Verma – Principal SQL Server Developer, Bob Dorr – Principal SQL Server Escalation Engineer

    Мощности серверного оборудования растут из года в год, что обусловлено многолетним развитием технологий изготовления процессоров. Анализируя результаты наших исследований того, как работает SQL Server на современном оборудовании, и как наши клиенты достигают оптимального для себя масштабирования вычислительных ресурсов, мы выдвинули на передний план дальнейшего развития сервера баз данных необходимость улучшения возможностей секционирования обслуживания нагрузки. В настоящее время, именно основанный на секционировании дизайн является самым распространённым способом локализации обслуживания нагрузки и улучшения производительности и масштабируемости. Примером того, как SQL Server использует секционирование нагрузки является объект CMemThread.

    Читать статью полностью
    автор: Александр Гладченко добавлено: 17 май 17 просмотры: 797, комментарии: 0



    out of memory while reading tuples при импорте из PostgreSQL

    Блог: Cruel SQL
    Импортировал давеча SSIS-ом в меру увесистую (несколько миллионов записей) таблицу на SQL Server из PostgreSQL. Скачал официальный бесплатный ODBC-драйвер ( http://www.postgresql.org/ftp/odbc/versions/ ), пульнул DataFlow.

    И всё бы пучком, но на небольших выборках.
    А вот забрать всю таблицу разом не получалось. Вместо данных вылезала ошибка из сабжа.
    Погуглил. Ну ладно, может, лениво погуглил, но, кроме каких-то невнятных кувырков с импортированием данных по кускам и рекламы коммерческих OLEDB-шных провайдеров, ничего не нашёл. Пришлось действовать методом тыка.

    В общем, коллеги, если у вас вдруг вскочит аналогичный прыщ по работе, то вот рецепт.
    В ConnectionString-е находим свойство useserversideprepare=0 и проставляем там единичку вместо нуля. Ошибка out of memory возникает на уровне ODBC-шного драйвера при подготовке данных на стороне клиента и, соответственно, исчезает при виде этой самой единички.

    Ну и да, если импорт запускается по расписанию, нужно в свойствах jobstep-а проставить выполнение в 32-битной среде, иначе валится с мутной ошибкой о невозможности подключения.
    автор: Алексей Дружинин добавлено: 17 май 17 просмотры: 807, комментарии: 0



    Загрузка данных из AD (MS SQL)

    Блог: DWH
    Отнюдь не всегда получается воспользоваться LDAP-запросом к AD для получения данных из домена, т.к. некоторые показатели AD содержат не одно, а несколько значений.
    Это можно обойти, написав ScriptComponent следующим образом:

    1) В SSIS-пакете объявляем 2 переменные:
    domain - отображаемое имя домена, которое пойдет в таблицу
    FQDN - имя домена в формате LDAP://xxxx.xxxx.xxxx
    2) Создаем ForEach Loop, где в коллекции перечисляем руками сопоставление
    FQDN(в Column0) - domain(в Column1)
    3) В ForEach добавляем DataFlow
    4) В DataFlow в качестве источника добавляем ScriptComponent, не забываем добавить объявленные выше переменный в область видимости ScriptComponent`а
    5) В ScriptComponent`е объявляем нужные выходы
    6) В код ScriptComponent`а в CreateNewOutputRows добавляем следующее (предполагаю, что можно написать оптимальнее и намного короче)

    Пример приложен
    читать дальше...
    автор: Критик добавлено: 07 апр 17 просмотры: 1794, комментарии: 0



    Как сегодня выбирают СУБД: "Просто интересно!"©

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

    Тогда добро пожаловать под кат...
    автор: servit добавлено: 03 апр 17 просмотры: 2574, комментарии: 0



    500 000 !!! ура !

    Блог: Oracle SQL
    итак, свершилось, на моем блоге 500 000 посещений
    Просмотров
    Сегодня 503
    В этом месяце 14803
    Всего 500111
    автор: Myp3_u_K добавлено: 28 мар 17 просмотры: 2451, комментарии: 5


    предыдущие записи