Обновить
3

Microsoft SQL Server *

Система управления реляционными базами данных

Сначала показывать
Порог рейтинга
Уровень сложности

Как мы построили динамические отчеты на SSRS 2014

Время на прочтение14 мин
Количество просмотров15K

Мы уже рассказывали, как помогли одной производственной компании трансформировать процессы корпоративного обучения и развития персонала. Сотрудники заказчика, которые тонули в бумажных документах и Excel-таблицах, получили удобное iPad-приложение и веб-портал. Одна из самых важных функций этого продукта – создание динамических отчетов, по которым руководители судят о работе сотрудников «в поле». Это огромные документы с десятками полей и средними размерами в 3000*1600 пикселей.

В этой статье мы поговорим о том, как развернуть эту красоту на базе Microsoft SQL Server Reporting Services, почему такой бэкенд может плохо дружить с веб-порталом и какие хитрости помогут наладить их отношения. Вся бизнес-часть решения уже описана в предыдущей статье, поэтому здесь мы сосредоточимся на технических вопросах. Начнем!

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

ImportExportDataSql — бесплатный конвертер данных MSSQL

Время на прочтение4 мин
Количество просмотров19K

Введение


Очень часто возникает задача конвертации данных из одной БД в другую, из внешнего файла разного формата в БД и наоборот. При этом типы данных внутри БД могут быть не только текстовые, но и бинарные (binary или varbinary). Бинарные и текстовые данные, как известно, в SQL Server Management Studio обрезаются и не выводятся полностью. В связи с этими недостатками пришлось написать свое приложение для конвертации данных в/из MSSQL на языке C# (.NET Framework 4.0). Приложение называется ImportExportDataSql и изначально он создавался именно для конвертации из бинарных полей БД в файлы, но потом функционал расширялся. Приложение портативное, без рекламы и не требует доступа в Интернет.

Возможности приложения


  1. Результат SQL-запроса выборки данных генерит данные в SQL-формате с проверкой наличия записи в таблице по указанному пользователем условию WHERE
  2. Несколько результатов SQL-запросов объединяются в один файл, если пользователь укажет в разных задачах одинаковое имя выходного файла
  3. Все настройки хранятся в XML файле
  4. Возможность запуска из консоли
  5. Быстрая загрузка/выгрузка в БД при работе с CSV
  6. Возможность загружать Excel-файлы в двух режимах
  7. Выполняются только отмеченные задачи
  8. Задачи, выполненные с ошибками подсвечиваются красным цветом, а без ошибок — зеленым. Сообщение об ошибке при этом выводится не только в лог, но и в виде всплывающей подсказки напротив строки, где возникла ошибка

Интерфейс приложения


При запуске приложения необходимо соединиться с БД.



После успешного соединения с БД отображается список задач.


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

Геоаналитика в рознице, часть1: автоматизируем процесс выбора места для бизнеса. 2ГИС + MS Azure + ML

Время на прочтение5 мин
Количество просмотров4.2K


Всем привет!

Меня зовут Сергей Коньков — я архитектор данных в компании Business reports & Data.
Данная статья рассказывает о возможностях использования гео-аналитики и машинного обучения в розничной компании и основана на реальном проекте нашего клиента — большой сети салонов красоты. Здесь не будет много кода и технических деталей, внимание будет уделено обзору технологий, их применению и интеграции.
Читать дальше →

Как я чинил поломанную базу и что из этого вышло

Время на прочтение7 мин
Количество просмотров18K
Однажды ко мне обратились с просьбой помочь «исправить» одну базу данных. CHECKDB при проверке выдавал список ошибок, некоторые из которых отмечались как «неисправимые». Приложение при этом работало, но все равно было как-то неспокойно.

Да, правильным решением в такой ситуации было бы взять бэкап от того момента, когда ошибки еще не появляются, локализовать испорченные данные и перезаписать их из чистой копии. Но… как это часто бывает, ошибку поймали слишком поздно, так что восстанавливаться, по сути, было не с чего. С другой стороны – был бы бэкап, не было бы этой истории.
Читать дальше →

Ограничение доступа к атрибутам измерения в табличной модели SSAS

Время на прочтение3 мин
Количество просмотров3.6K
Бывают случаи, когда нужно ограничить пользователям доступ к некоторым данным в кубе. Казалось бы, тут нет ничего сложного: устанавливай построчные фильтры в ролях и готово, но есть одна проблема — фильтр урезает данные в таблице и получается, что можно посмотреть обороты только по доступным строкам, а нам нужны все обороты, но детализация должна быть доступна только для части из них.

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

Чтобы не дать пользователю возможность просматривать обороты в разрезе клиентов, можно обыграть это через формулы в мерах и выводить пустое значение, если пользователь попытается посмотреть оборот конкретного клиента, один из подобных вариантов описан здесь. Однако это всё не то. Когда мер несколько десятков, то писать в каждой из них формулу… а если забудешь? Но ведь точно забудешь же когда-нибудь… А если пользователю нужны данные из конкретной карточки клиента, то ему ни что не помешает это увидеть без выбора фильтрующей меры. Что же делать?

Нам нужно было добиться вот такого отображения:


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

Интерфейсы для мониторинга производительности популярных БД в Foglight for Databases

Время на прочтение2 мин
Количество просмотров5.6K


В прошлых статьях мы рассказывали о мониторинге различных БД в Quest Foglight for Databases и о подходе к быстрой локализации проблем производительности SQL Server. В этой мы покажем какие ещё дашборды можно использовать на основе собираемых метрик. А метрик этих достаточно. Под катом скриншоты интерфейса и описания к ним.
Читать дальше →

Поиск данных и объектов в базе данных MS SQL Server с помощью бесплатной утилиты dbForge Search

Время на прочтение5 мин
Количество просмотров89K

Описание общей потребности в поиске данных и объектов в базе данных


Поиск данных, а также хранимых процедур, таблиц и других объектов в базе данных является достаточно актуальным вопросом в том числе и для C#-разработчиков, а также и для .NET-разработки в целом.

Достаточно часто может возникнуть ситуация, при которой нужно найти:

  1. объект базы данных (таблицу, представление, хранимую процедуру, функцию и т д)
  2. данные (значение и в какой таблице располагается)
  3. фрагмент кода в определениях объектов базы данных

Существует множество готовых решений как платных, так и бесплатных.

Сначала рассмотрим как можно осуществлять поиск данных и объектов в базе данных с помощью встроенных средств самой СУБД, а затем рассмотрим как это сделать с помощью бесплатной утилиты dbForge Search.
Читать дальше →

10 бесплатных утилит ApexSQL для управления базами данных Microsoft SQL Server

Время на прочтение6 мин
Количество просмотров24K


Привет, Хабр! Мы много работаем с Quest Software, и в этом году они приобрели ApexSQL — производителя решений для управления и мониторинга баз данных Microsoft SQL Server. В России об этих ребятах, как нам кажется, знают мало. На главной своего сайта они пишут «Killer tools for SQL Server». Звучит угрожающе. У нас появилась идея представить этого вендора и разобраться что же такого убийственного есть в их решениях. Начнём с хайповой части — бесплатных продуктов. После них будет краткая часть о коммерческих продуктах. Надеюсь, эти программы окажутся вам полезны. Прошу под кат.

2 лайфхака: альтернативы классическому поиску в Microsoft SQL Server

Время на прочтение12 мин
Количество просмотров21K
Привет, Хабр! Наши друзья из Softpoint подготовили интересную статью про Microsoft SQL Server. В ней разбирается два практических примера использования полнотекстового поиска:

  • Поиск по «бесконечным» строкам (напр., Комментарии) в противовес обычному поиску через LIKE;
  • Поиск по номерам документов с префиксами. Там, где обычно полнотекстовый поиск применять нельзя: ему мешают постоянные префиксы. Разбирается 2 подхода: предварительная обработка номера документа и добавление собственной библиотеки-word breaker’а.

Присоединяйтесь!

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

Байки разработчика 1C: эпикофейлические

Время на прочтение6 мин
Количество просмотров24K
Все мы любим рассказывать о своих успехах и не очень любим распространяться о неудачах. Но опыт ошибок зачастую более ценен, чем профит от удачно завершенного дела. Поэтому как раз о таких случаях я и хотел бы рассказать сегодня. Итак, поехали…
Читать дальше →

Как в Microsoft SQL Server получать данные из Google Analytics при помощи R

Время на прочтение9 мин
Количество просмотров9.3K

В этом материале я хочу подробно показать, как можно при помощи R в Microsoft SQL Server реализовать получение данных из Google Analytics (и вообще из любого API).


Благодарности:


Поскольку я ни разу не маркетолог мне требовалась помощь специалиста. Тестовый кабинет и доступ Google Analytics (GA) организовал Алексей Селезнёв , а также давал дельные консультации.
Он профессионально занимается аналитикой в маркетинге. И в качестве благодарности за помощь упоминается здесь телеграмм канал Алексея, где он ведет свою активность.


Задача — у нас есть сервер MS SQL и мы хотим получать данные в DWH по API


Для подключения к Google Analytics (GA) будем использовать пакет googleAnalyticsR.


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

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

Тестируем SQL Server код с tSQLt

Время на прочтение21 мин
Количество просмотров16K
FYI: эта статья представляет собой дополненную версию моего доклада на SQA Days #25.

Опираясь на свой опыт общения с коллегами, могу утверждать: тестирование кода в БД не является распространённой практикой. Это может нести в себе потенциальную опасность. Логику в БД пишут такие же люди, какие пишут «обычный» код. Следовательно, там так же могут присутствовать ошибки, и они так же могут повлечь за собой негативные последствия для продукта, бизнеса и потребителей. Неважно, идёт ли речь о хранимых процедурах, помогающих бэкенду, или о ETL, преобразующих данные в хранилище — риск есть, и тестирование может его существенно снизить. О том, что такое tSQLt и как оно помогает нам в тестировании кода в SQL Server, я и хочу вам рассказать.


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

Сравнение компараторов для синхронизации схем и данных баз данных MS SQL Server

Время на прочтение16 мин
Количество просмотров11K

Описание общей потребности в синхронизации изменений


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

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

Как правило, разработку баз данных ведут в специально выделенной среде. Затем изменения переносят в среду тестирования для проведения различных проверок (юнит-тесты, автотесты, нагрузочные тесты и т д). И только после всех этапов разработки и проверок осуществляют перенос изменений в промышленную среду.

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

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

Ближайшие события

Надстройка для Excel, облегчающая установку фильтров при работе с кубами (VBA)

Время на прочтение2 мин
Количество просмотров7.6K
Как известно, из коробки Excel не позволяет устанавливать фильтры по списку значений для сводных таблиц, а это ведь такая нужная вещь! Как отфильтровать товары по сотне кодов, а потом по другой сотне? Есть, конечно, способы, но все это не то…

Или, например, установить для куба фильтр по измерению с датами, но не проставлять галочки на каждом дне/месяце/годе, а задать диапазон С… ПО ....

Еще достаточно часто требуются установки периодов по фиксированным шаблонам, типа текущий день/месяц/год. Для этих целей можно добавить наборы (в многомерной модели куба) или добавить специальные атрибуты в измерение (это не очень удобно, но в табличной модели куба наборов нет).

Мы запилили на VBA расширение, добавляющее на ленту панель Инструменты куба с волшебными кнопочками.

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

Секционирование в SQL Server

Время на прочтение13 мин
Количество просмотров80K
Секционирование («партицирование») в SQL Server, при кажущейся простоте («да чего там – размазываешь таблицу и индексы по файловым группам, получаешь профит в администрировании и производительности») – достаточно обширная тема. Ниже я попробую описать как создать и применить функцию и схему секционирования и с какими проблемами можно столкнуться. О преимуществах я говорить не буду, кроме одного — переключение секций, когда вы моментально убираете из таблицы огромный набор данных, либо наоборот — моментально загружаете в таблицу не менее огромный набор.
Читать дальше →

Быстрая локализация проблем производительности Microsoft SQL Server в Quest Foglight

Время на прочтение4 мин
Количество просмотров6.8K


В прошлой статье об инструменте для мониторинга Foglight for Databases мы рассказывали о возможностях контроля из единого интерфейса SQL Server, Oracle, PostgreSQL, MySQL, SAP ASE, DB2, Cassandra и MongoDB. Сегодня разберём подходы к быстрому выявлению причин нештатной работы Microsoft SQL Server:

  • Поиск источника блокировки;
  • Сравнение настроек БД «было-стало» с привязкой к метрикам производительности;
  • Поиск изменений в структуре БД, из-за которых снизилась производительность.

Подробности под катом.
Читать дальше →

Использование Union вместо OR

Время на прочтение3 мин
Количество просмотров11K
Иногда медленные запросы можно исправить, немного изменив запрос. Один из таких примеров может быть проиллюстрирован, когда несколько значений сравниваются в предложении WHERE с помощью оператора OR или IN. Часто OR может вызывать сканирование индекса или таблицы, которая может не быть предпочтительным планом выполнения с точки зрения потребления ввода-вывода или общей скорости запросов.

Многие переменные вступают в игру, когда оптимизатор запросов создает план выполнения. Эти переменные включают в себя множество характеристик оборудования, настроек экземпляра, настроек базы данных, статистики (таблица, индекс, auto-generated), а также способ написания запроса. Здесь мы меняем способ написания запроса. Каким бы неожиданным это ни казалось, даже если два разных запроса могут возвращать одни и те же результаты, путь, по которому они идут, может быть совершенно разным в зависимости от формата запроса.
Читать дальше →

Отслеживание жизненного цикла пользователей без плоскогубцев и изоленты

Время на прочтение4 мин
Количество просмотров4.9K


Добрый день! Вас беспокоит Валентина Остроухова из бухгалтерии. Сергей Сергеевич уходит в отпуск на две недели и я буду его заменять. Вы могли бы предоставить мне доступ на это время к его папкам в директории //fs-buh/black_cashier/corruption? Заранее спасибо!

Валентина Остроухова, бухгалтер по расчётам с партнёрами

Привет! Это Коля из техподдержки. Нам создали новую группу в AD специально для нового начальника отдела безопасников. Там есть доступ на специфические серверы. Можешь меня временно туда добавить, чтобы я смог проверить корректность доступов? Благодарю!

Николай Зубатов, инженер технической поддержки

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

Почему не SQL?

Время на прочтение67 мин
Количество просмотров74K


Без преувеличения можно сказать, что SQL — один из самых распространенных в мире языков. Информационные системы могут быть написаны на Java, Python, JavaScript, C#, PHP и десятке других языков, но SQL база в том или ином виде будет в абсолютном большинстве таких систем. Среди бизнес-приложений процент систем, использующих SQL, вообще стремится к 100%.

При этом большинство существующих материалов о SQL на хабре и других ресурсах сводятся к простым вопросам, вроде: «какие типы соединений бывают», «чем левое соединение отличается от правого», «что такое триггеры» и так далее. Более того, в этих материалах практически ничего не говорится о проблемах SQL (и его реализациях), которых на самом деле очень и очень немало. Поэтому мы решили восполнить оба этих пробела: с одной стороны рассказать, как многие вещи в SQL работают изнутри, а с другой стороны — почему они работают не так как нужно / хотелось бы.

При этом речь в статье пойдет не о «вкусах и цветах фломастеров». Все затрагиваемые проблемы носят фундаментальный характер: присутствуют при разработке практически любой информационной системы и не ограничиваются «красотой кода», а в той или иной степени приводят либо к критическому падению производительности, либо к существенному росту порога вхождения, либо к значительным трудозатратам со стороны разработчика.
Читать дальше →

Обновление статистики на secondary репликах Availability Group

Время на прочтение8 мин
Количество просмотров1.4K
Все мы любим и используем восхитительные возможности Availability Group на secondary репликах, такие, как проверка целостности, бэкапы и т.д.

На самом деле, невозможность сохранения этой информации в БД на реплике – это та ещё головная боль (и подумайте о таких вещах как CDC, для ещё большего дискомфорта).

Но хватит жаловаться, вот главная идея: дорогой Microsoft, позволь нам использовать наши реплики для обновления статистики… ну и делать на них намного больше всякого.

Всегда* есть путь, или типа того

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