Обновить
52.23

SQL *

Формальный непроцедурный язык программирования

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

MSSql: Использование оператора APPLY в TSql

Время на прочтение2 мин
Охват и читатели55K
Недавно, реализуя некоторый код доступа к данным, я столкнулся с задачей выбора последних N записей для каждой сущности. Пользователь kuda78 подсказал вместо многоэтажной выборки использовать метод SelectMany.
Исследуя, какой SQL код создает LinqToSQL, я натолкнулся на интересный SQL оператор APPLY.
Читать дальше →

GreenSQL: Защита SQL-серверов от инъекций

Время на прочтение4 мин
Охват и читатели6.6K
Иногда возникает необходимость использовать клиент-серверное программное обеспечение, реализующее нужный функционал, но крайне уязвимое к SQL-инъекциям. В основном это веб-сайты, сетевые приложения и другие сервисы, доступ к которым открыт широкому кругу пользователей, в том числе и злоумышленникам. В силу различных причин не всегда есть возможность предотвратить SQL-инъекции на уровне приложения — исходный код может быть закрыт, либо, в случае открытого кода, недостаточно знаний для внесения в него изменений, либо эта операция является дорогостоящей.

Обеспечить безопасность приложения в данном случае поможет GreenSQL — файрволл или прокси для SQL-серверов. Сервис GreenSQL размещается между вашим приложением и SQL-сервером, принимает sql-запросы от приложения и в зависимости от степени его благонадежности либо перенаправляет их на целевой SQL-сервер, либо отвергает.


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

Университет Kimball: 10 основных правил многомерного моделирования

Время на прочтение7 мин
Охват и читатели18K

Марги Росс (Margy Ross) — Президент Kimball Group.

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

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

Parameter sniffing в SQL Server 2005/2008 (на примере Project Server 2007)

Время на прочтение6 мин
Охват и читатели4.4K
Столкнулся с интересной ошибкой на загруженном Project Server 2007. Причем проявляется она при активном использовании (читай, в продакте). При разработке, отладке и тестировании данная ошибка не проявилась ни разу. Еще хуже то, что при возникновении ошибки SQL «переклинивает», и без постороннего вмешательства ошибка не исчезает. Ну и под конец — из логов крайне сложно понять причину ее возникновения. Гугл, к сожалению, не помог, что, собственно, и побудило написать об этой проблеме.
Если у вас на странице сведений о проекте «Возникла неожиданная ошибка», а в логе ошибка 7888 (SQL Timeout) — добро пожаловать под кат. Если вы интересуетесь внутренним «эго» SQL Server — тоже стоит почитать.
Читать дальше →

SP4 для MSSQL 2005 доступен посредством Windows Update

Время на прочтение1 мин
Охват и читатели10K
В свете всех последних новостей, праздников, а также наличия более актуального MS SQL Server 2008, про «малыша» 2005 многие забыли.

Днями Microsoft начала распространение Service Pack 4 для MS SQL Server 2005 посредством Windows Update.

Пакет можно было скачать ещё в середине декабря 2010, однако в свете 2008-й версии, выход 4-го пакета обновления для 2005-й версии громко не афишировался.

Пакет обновления 4 (SP4) для SQL Server 2005 можно также загрузить со страницы загрузки пакета обновления 4 (SP4) для SQL Server 2005. Для каждой платформы, поддерживаемой SQL Server 2005, доступен отдельный загружаемый пакет установки:

  • Для владельцев корпоративных версий, это можно сделать на соответствующей странице Download Center.
  • Для владельцев Express или Express Edition with Advanced Services, следует скачивать обновление с отдельной страницы Download Center.
Читать дальше →

Колоночные СУБД — принцип действия, преимущества и область применения

Время на прочтение5 мин
Охват и читатели148K
Середина 2000-х годов ознаменовалась бурным ростом числа колоночных СУБД. Vertica, ParAccel, Kognito, Infobright, SAND и другие пополнили клуб колоночных СУБД и разбавили гордое одиночество Sybase IQ, основавшей его в 90х годах. В этой статье я расскажу о причинах популярности идеи по-колоночного хранения данных, принцип действия и область использования колоночных СУБД.

Начнем с того, что популярные в наше время реляционные СУБД — Oracle, SQL Server, MySQL, DB2, Postgre и др. базируются на архитектуре, отсчитывающей свою историю еще c 1970-х годов, когда радиоприемники были транзисторными, бакенбарды длинными, брюки расклешенными, а в мире СУБД преобладали иерархические и сетевые системы управления данными. Главная задача баз данных тогда заключалась в том, чтобы поддержать начавшийся в 1960-х годах массовый переход от бумажного учета хозяйственной деятельности к компьютерному. Огромное количество информации из бумажных документов переносилось в БД учетных систем, которые должны были надежно хранить все входящие сведения и, при необходимости, быстро находить их. Такие требования обусловили архитектурные особенности реляционных СУБД, оставшиеся до настоящего времени практически неизменными: построчное хранение данных, индексирование записей и журналирование операций.
Читать дальше →

Как подружить 1С 7.7 и Postgres

Время на прочтение2 мин
Охват и читатели12K
Для такого популярного программного продукта, как 1С: Предприятие, разработчикам приходится обеспечивать кроссплатформенность и совместимость с большим числом приложений. В частности, с каждой новой версией добавляется поддержка всё новых СУБД.

Многие предприятия (преимущественно малые и средние) по-прежнему не торопятся переходить от версии 7.7 к 8.х. А в этом случае единственная предусмотренная разработчиками совместимая СУБД – Microsoft SQL. Вариант весьма затратный для небольшой компании: помимо лицензий на рабочие станции и MS SQL Server, требуется приобрести еще и MS Server.

Альтернативным решением может стать технология SELTA@Etersoft, разработанная питерской компанией Etersoft. SELTA используется в связке со свободной СУБД Postgre SQL и позволяет 1С 7.7 работать с SQL-базами. Продукт является коммерческим и позиционируется разработчиком как доступная (стоимость решения составляет от 15000 р.) альтернатива MS SQL Server.

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

Определяем логин пользователя по его SID средствами MS SQL

Время на прочтение2 мин
Охват и читатели11K
Здравствуйте. Будучи администратором БД (Microsoft Dynamics NAV), возникла задача выдавать/проверять наличие роли SQL db_datareader для некоторых работников. Но в таблице список пользователей хранился в виде SID windows: S-1-5-21-3879… и записи постоянно добавлялись. Другими словами необходимо было конвертировать из S-1-5-21-38… → aapetrov.

Серверов было около 70-ти и хотелось все сделать стандартными средствами (не использовать, например psgetsid.exe).

Как и положено начал с гугла — ничего полезного не нашел. Пришлось обратиться за помощью на многоуважаемый форум. Было предложено множество вариантов, за что огромное спасибо добрым людям, но увы, решение так и не было найдено.
«Если даже ребята с sql.ru не смогли подсказать — подумал я — значит все, это конец».

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

Отслеживание изменений в SQL Server 2008

Время на прочтение5 мин
Охват и читатели63K
Я думаю, каждый разработчик СУБД рано или поздно сталкивается с задачей отслеживания обращений к БД и событий сервера в целом. И прежде чем выбрать инструмент (или написать его самому), конечно, стоит обратить внимание на решения, которые предлагают сами разработчики СУБД. Хочу поделиться нашим опытом в Brights решения этой задачи для SQL Server 2008.
Читать дальше →

Microsoft готовит «беcсерверный» вариант SQL Server

Время на прочтение1 мин
Охват и читатели2.4K
Microsoft запустила публичный опрос, в котором предлагает всем желающим поучаствовать в поиске названия для новой редакции (или нового режима) SQL Server.
Новый режим SQL Server носит определение “server-less” (беcсерверный). Из описания к опросу можно получить следующие данные:
  • новый режим позволит использовать полнофункциональный SQL Server (Express?) без необходимости его установки, конфигурации и сопровождения;
  • все что вам понадобится для работы с сервером – это строка соединения;
  • новый режим будет работать только с локальными соединениями, а потому предназначен в первую очередь для целей разработки приложений, отладки и тестирования;
  • однако, новый режим смогут использовать и сторонние приложения, в которые можно будет внедрить соответственно настроенный SQL Server;
  • новый режим будет работать в качестве пользовательского процесса, а не сервиса;
  • SQL Server в новом режиме будет “подниматься” при соединении и работать при наличии соединения и отключаться (shutdown), когда последнее соединение будет закрыто.

MS SQL 2005, Parameter Sniffing, тормозящий Stored Procedure

Время на прочтение1 мин
Охват и читатели6.9K
Недавно столкнулся с проблемой: скрипт запущенный в Query Analyzer отрабатывал за секунду, а он же в виде хранимой процедуры аж 50 секунд. Оказалось всему виной Parameter Sniffing который призван… оптимизировать запрос. :)
Читать дальше →

Есть ли альтернатива гигантам рынка СУБД?

Время на прочтение3 мин
Охват и читатели16K
Не редко можно услышать мнение, что существуют такие категории ПО, в которых свободный софт никогда не сможет быть альтернативой проприетарным продуктам. Чаще всего в пример приводятся какие-то сложные, узкоспециализированные, профессиональные программы. Я не знаю, насколько справедливо такое мнение, но некоторые из вышеупомянутых категорий, похоже, можно вычёркивать.

В одном из докладов недавно проходившего CNews Forum я увидел «СУБД для предприятий» в списке ПО, которое навсегда останется проприетарным. Я не могу согласиться с таким тезисом, поэтому написал небольшую статью.
Читать дальше →

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

Доступен для загрузки SQL Server «Denali» CTP и еще ряд анонсов с конференции PASS 2010

Время на прочтение3 мин
Охват и читатели1.1K
image

Вчера в ходе конференции PASS Summit 2010 была анонсирована и стала доступна для загрузки предварительная версия следующего поколения SQL Server под кодовым именем Denali.

Кроме анонса новой версии SQL Server был сделан ряд других анонсов:
  • анонсирована новая редакция SQL Server 2008 R2 Parallel Data Warehouse предназначенная для высоконагруженных параллельных вычислений и обработки информации;
  • анонсировано партнерство с компанией HP по созданию платформы HP Enterprise Data Warehouse Appliance на базе новой редакции SQL Server 2008 R2 Parallel Data Warehouse;
  • анонсирована программа сертификации Microsoft Certified Master (MCM) для SQL Server;
  • анонсирован новый облачный сервис Atlanta, который позволяет централизованно отслеживать экземпляры SQL Server и определять проблемы с конфигурацией, производительностью, безопасностью, а так же управлять серверами через облако.
Новая версия SQL Server Denali привносит огромное количество нововведений. Их перечисление займет массу времени, здесь перечислено только самое важное:
Читать дальше →

Автоинкрементные первичные ключи (суррогатные ключи) = зло?

Время на прочтение7 мин
Охват и читатели27K
В этой статье я приведу взгляд (отрицательный по большей части) Джоша Беркуса, CEO компании PostgreSQL Experts Inc. на использование суррогатных ключей для таблиц базы данных, тех самых INT NOT NULL AUTO_INCREMENT PRIMARY KEY, к которым мы привыкли. Фактически, это будет вольный, сильно сокращенный перевод его статьи на ittoolbox.

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

Честно говоря, прочитав эту статью и не заметив, кто автор, я подумал, что он все же преувеличивает и вообще, я без него как-нибудь разберусь, где и какие ключи мне использовать. Потом я еще немного подумал и полез за дампом структуры базы моего старого проекта. Было интересно.

Если вы опытный DBA, наверное, вам стоит пройти мимо, чтобы не расстраиваться.

Но обо всем по порядку. Сначала ОЧЕНЬ сокращенный перевод:
Читать дальше →

Секционирование. Автоматическое добавление секций

Время на прочтение15 мин
Охват и читатели35K
В версии 11g в Oracle появилась несколько новых замечательных схем секционирования — например, удобная функциональность интервального секционирования — автоматического создания секций по мере выхода range из заданных границ.
В версиях до 11g необходимо периодически вручную либо заранее добавлять секции, либо разбивать секцию по умолчанию. То есть постоянно необходимо отслеживать состояние таких таблиц. В данной статье я поделюсь своими решениями для автоматизации таких задач секционирования.
Сначала приведу пример для 11g:
  1. create table res (
  2.   res_id     number not null,
  3.   res_date  date,
  4.   hotel_id  number(3),
  5.   guest_id  number
  6. )
  7. partition by range (res_id)
  8. interval (100) store in (users)
  9. (
  10.   partition p1 values less than (101)
  11. );

Этот скрипт создает секцию p1 для записей, значение столбца res_id которых находится в диапазоне 1-100. Когда вставляются записи со значением столбца res_id меньшим 101, они помещаются в секцию p1, а когда в новой записи значение этого столбца равно или больше 101, сервер Oracle Database 11g создает новую секцию, имя которой генерируется системой. Подробнее с этим примером и прочими новыми схемами секционирования вы можете познакомиться в переводе статьи Арупа Нанды в русском издании Oracle Magazine.
Рассмотренные ниже решения можно применить и в других СУБД, не поддерживающих автоматическое добавление секций
Читать дальше →

Выпущен SQL Server 2008 Service Pack 2 и еще некоторые обновления

Время на прочтение1 мин
Охват и читатели1.8K
image

Выпущен второй сервисный пакет исправлений для SQL Server 2008.

Полный список нововведений можно найти тут, ниже некоторые из них:
  • представлена поддержка до 15000 разделов для таблиц и индексов. Ранее существовал предел до 1000 разделов. Полное описание нововведения можно найти в этом отдельном документе (.docx);
  • интеграция Reporting Services с SharePoint 2010;
  • SQL Server 2008 R2 Application and Multi-Server Management теперь совместим и может работать с SQL Server 2008;
  • новый административный инструмент SQL Server Utility;
  • поддержка приложениями Data-tier Application (DAC), которая была ранее представлена для SQL Server 2008 R2.
Загрузить второй сервис-пак для SQL Server 2008 можно по этому адресу.
Кроме того, были обновлены следующие инструменты:
  • SQL Server 2008 SP2 Reporting Services Report Builder (link);
  • SQL Server 2008 SP2 Reporting Services Add-in for Microsoft SharePoint Technologies (link).

Обзор типов индексов Oracle, MySQL, PostgreSQL, MS SQL

Время на прочтение6 мин
Охват и читатели216K
В одном из комментариев здесь была просьба рассказать подробнее об индексах, и так как, в рунете практически нет сводных данных о поддерживаемых индексах различных СУБД, в данном обзоре я рассмотрю, какие типы индексов поддерживаются в наиболее популярных СУБД
Взглянем?

Библиотека dklab_rowlog для версионирования строк в таблицах PostgreSQL

Время на прочтение4 мин
Охват и читатели3.1K
В продолжение сегодняшнего топика Версионность и история данных — поделюсь простеньким инструментом, который мы используем.

Dklab_rowlog — это библиотека из нескольких хранимых процедур PostgreSQL, позволяющая добавить версионирование записей к любой таблице в БД. Иными словами, что бы ни происходило с таблицей, как бы данные там ни менялись (добавлялись/удалялись), это будет отражено в специальной табличке-логе.

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

Примеры использования


Предположим, нам нужно логировать изменения вот в такой табличке:
Читать дальше →

Версионность и история данных

Время на прочтение5 мин
Охват и читатели164K
При разработке баз данных зачастую требуется обеспечить поддержку версионности и хранения истории объектов. Например, у работника может изменяться должность, у должности в свою очередь может меняться оклад — в многомерном моделировании это называется Slowly changing dimensions(далее SCD) — редко изменяющиеся измерения, то есть измерения, не ключевые атрибуты которых имеют тенденцию со временем изменяться. Всего существует 6 основных типов(методов) SCD, которые определяют как история изменений может быть отражена в модели.

Подробнее...

Вклад авторов