SQL.RU
 client/server technologies
 Главная | Документация | Статьи | Книги | Форум | Блоги | Опросы | Гостевая | Рассылка | Работа | Поиск | FAQ |
   
#362<<  #363  >>#364

СОДЕРЖАНИЕ

1.СТАТЬИ
1.1.Агрегат потока (Stream Aggregate)
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа
 

 

СТАТЬИ

Агрегат потока (Stream Aggregate)

По материалам статьи Craig Freedman: Stream Aggregate

Когда мы имеем дело с предложением GROUP BY, SQL Server для вычисления агрегатов использует два оператора. Один из этих операторов - агрегат потока, который, как Вы помните, был рассмотрен в предыдущей статье, и который используется для скалярных агрегатов. Другой оператор, это агрегат хэша (Hash Aggregate). В этой статье, я более подробно рассмотрю то, как работает агрегат потока.

Алгоритм

Агрегат потока использует данные, поступающие ему отсортированными по столбцу (столбцам) группировки. Если группировка выполняется более чем по одному столбцу, мы можем выбрать произвольный порядок сортировки, который использует все эти столбцы. Например, если мы группируем по столбцу "b", мы можем сортировать по "(a, b)" или по "(b, a)". Как и в случае с соединением слиянием, порядок сортировки может быть задан индексом или явным оператором сортировки. Порядок сортировки гарантирует, что наборы строк с одинаковыми значениями для этих столбцов будут смежными друг с другом.
Ниже представлен псевдокод алгоритма агрегата потока:

clear the current aggregate results clear the current group by columns for each input row begin if the input row does not match the current group by columns begin output the aggregate results clear the current aggregate results set the current group by columns to the input row end update the aggregate results with the input row end

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

Простые примеры

create table t (a int, b int, c int) select sum(c) from t group by a, b |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Stream Aggregate(GROUP BY:([t].[b], [t].[a]) | DEFINE:([Expr1010]=COUNT_BIG([t].[c]), | [Expr1011]=SUM([t].[c]))) |--Sort(ORDER BY:([t].[b] ASC, [t].[a] ASC)) |--Table Scan(OBJECT:([t]))

Вы видите практически такой же план, как и в случае со скалярным агрегатом для запроса с SUM. Отличие только в том, что перед соединением данные должны быть отсортированы (как Вы могли догадаться, скалярный агрегат выглядит как одна большая группа, содержащая все строки; таким образом, для скалярного агрегата отпадает необходимость в сортировке строк для разных групп).
Агрегат потока сохраняет порядок сортировки на входе, т.е. если мы запрашиваем упорядочивание для группы столбца или для группы нескольких столбцов, повторная сортировка окажется ненужной:

select sum(c) from t group by a, b order by a |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Stream Aggregate(GROUP BY:([t].[a], [t].[b]) | DEFINE:([Expr1010]=COUNT_BIG([t].[c]), | [Expr1011]=SUM([t].[c]))) |--Sort(ORDER BY:([t].[a] ASC, [t].[b] ASC)) |--Table Scan(OBJECT:([t]))

Обратите внимание, что столбцы сортировки совсем другие, чем в предыдущем примере. До этого мы не заботились о том, как сортировать, по "(a, b)" или по "(b, a)". Теперь, когда запрос содержит предложение ORDER BY, мы должны выбрать для сортировки первый столбец.
Если имеется подходящий индекс, сортировка оказывается вообще ненужной:

create clustered index tab on t(a,b) select sum(c) from t group by a, b |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Stream Aggregate(GROUP BY:([t].[a], [t].[b]) | DEFINE:([Expr1010]=COUNT_BIG([t].[c]), | [Expr1011]=SUM([t].[c]))) |--Clustered Index Scan(OBJECT:([t].[tab]), ORDERED FORWARD)

SELECT и DISTINCT

Когда имеется упорядочивающий индекс, агрегат потока может использоваться также и для выборки с DISTINCT (если для упорядочивания используется сортировка, отсортированы будут и сами дубликаты; т.ч. в этом случае отпадает необходимость использования агрегата потока). Выборка без дубликатов, по существу, то же самое, что и группировка без агрегатных функций по всем столбцам выборки. Например:

select distinct a, b from t

Можно переписать и так:

select a, b from t group by a, b

Оба запроса используют один и тот же план исполнения:

|--Stream Aggregate(GROUP BY:([t].[a], [t].[b])) |--Clustered Index Scan(OBJECT:([t].[tab]), ORDERED FORWARD)

Обратите внимание, что агрегат потока содержит предложение GROUP BY, а не определения столбцов.

Агрегаты с DISTINCT

Рассмотрим такой запрос:

select sum(distinct b) from t group by a

Необходимо устранить дубликаты значений столбца "b" для каждой группы. В моей предыдущей статье был показан способ реализации этого с использованием сортировки без дубликатов (Sort(DISTINCT …). Однако, если имеется подходящий индекс, для устранения дубликатов также может использоваться и агрегат потока:

|--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1010]=(0) | THEN NULL ELSE [Expr1011] END)) |--Stream Aggregate(GROUP BY:([t].[a]) | DEFINE:([Expr1010]=COUNT_BIG([t].[b]), | [Expr1011]=SUM([t].[b]))) |--Stream Aggregate(GROUP BY:([t].[a], [t].[b])) |--Clustered Index Scan(OBJECT:([t].[tab]), ORDERED FORWARD)

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

Несколько DISTINCT

В заключение рассмотрим такой запрос:

select sum(distinct b), sum(distinct c) from t group by a |--Merge Join(Inner Join, MANY-TO-MANY MERGE:([t].[a])=([t].[a]), | RESIDUAL:([t].[a] = [t].[a])) |--Compute Scalar(DEFINE:([t].[a]=[t].[a])) | |--Compute Scalar(DEFINE:([Expr1005]=CASE WHEN [Expr1018]=(0) | | THEN NULL ELSE [Expr1019] END)) | |--Stream Aggregate(GROUP BY:([t].[a]) | | DEFINE:([Expr1018]=COUNT_BIG([t].[c]), | | [Expr1019]=SUM([t].[c]))) | |--Sort(DISTINCT ORDER BY:([t].[a] ASC, [t].[c] ASC)) | |--Clustered Index Scan(OBJECT:([t].[tab])) |--Compute Scalar(DEFINE:([t].[a]=[t].[a])) |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1020]=(0) | THEN NULL ELSE [Expr1021] END)) |--Stream Aggregate(GROUP BY:([t].[a]) | DEFINE:([Expr1020]=COUNT_BIG([t].[b]), | [Expr1021]=SUM([t].[b]))) |--Stream Aggregate(GROUP BY:([t].[a], [t].[b])) |--Clustered Index Scan(OBJECT:([t].[tab]), ORDERED FORWARD)

Как и в случае с описанным в моей предыдущей статье примером нескольких скалярных агрегатов с DISTINCT, этот запрос будет разбит в две части - по одной для каждого набора неповторяющихся значений. Обратите внимание, что вычисление "sum(distinct c)" требует сортировки с DISTINCT по столбцу "c", в то время как вычисление "sum(distinct b)" использует упорядоченное сканирование кластеризованного индекса и агрегат потока, как это видно в представленном выше плане исполнения запроса. Эти два набора сумм соединяются при группировке по столбцу "a", что и даёт желаемый результат. Так как два входных набора уже отсортированы по столбцу группировки, может использоваться соединение слиянием (оператор скалярного вычисления "[t].[a] = [t].[a]" необходим для внутренних целей и его можно игнорировать).
Соединение слиянием должно выполняться по схеме "один ко многим" а не "многие ко многим" (MANY-TO-MANY), так как агрегаты гарантируют уникальность по столбцу группировки (и столбцу предиката соединения). Это скорее проблема производительности, а не проблема правильности результата. Если переписать изначальный запрос в виде явного соединения, мы действительно получим соединение "один ко многим":

select sum_b, sum_c from (select a, sum(distinct b) as sum_b from t group by a) r join (select a, sum(distinct c) as sum_c from t group by a) s on r.a = s.a |--Merge Join(Inner Join, MERGE:([t].[a])=([t].[a]), RESIDUAL:([t].[a]=[t].[a])) |--Compute Scalar(DEFINE:([Expr1009]=CASE WHEN [Expr1020]=(0) | | THEN NULL ELSE [Expr1021] END)) | |--Stream Aggregate(GROUP BY:([t].[a]) | | DEFINE:([Expr1020]=COUNT_BIG([t].[c]), | | [Expr1021]=SUM([t].[c]))) | |--Sort(DISTINCT ORDER BY:([t].[a] ASC, [t].[c] ASC)) | |--Clustered Index Scan(OBJECT:([t].[tab])) |--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1022]=(0) | THEN NULL ELSE [Expr1023] END)) |--Stream Aggregate(GROUP BY:([t].[a]) | DEFINE:([Expr1022]=COUNT_BIG([t].[b]), | [Expr1023]=SUM([t].[b]))) |--Stream Aggregate(GROUP BY:([t].[a], [t].[b])) |--Clustered Index Scan(OBJECT:([t].[tab]), ORDERED FORWARD)

Далее…

В следующей статье я напишу о другом операторе агрегации, об агрегате хэша.

[В начало]

ССЫЛКИ НА СТАТЬИ

Статьи на русском языке

12 правил Кодда
ru.wikipedia.org
12 правил (на самом деле их 13), которым должна удовлетворять каждая система управления реляционными базами данных.

Быть или не быть значению переменной
К. Дж. Дейт
Все три статьи этого цикла построены в виде полемики с двумя анонимными критиками Третьего Манифеста. Однако данная статья особенно полемична. Местами она напоминает мне одну из любимых книг моего детства - "Материализм и эмпириокритицизм" В.И.Ленина (хотя стиль Дейта является гораздо более интеллигентным). На самом деле, в статье обсуждаются вопросы, играющие важнейшую роль в реляционной модели данных, как она представляется Дарвеном и Дейтом в Третьем Манифесте: значения, проявления значений, переменные отношений, присваивания, равенство и т.д. Вся статья читается исключительно увлекательно, но основной сюрприз запрятан в самом конце. Самое смешное, что если вы сразу начнете читать статью с конца, то можете и не найти этот сюрприз. Вернее, вы может не понять всю каверзность этого сюрприза. Так что читайте уж с начала до конца. Обещаю, не пожалеете.

Обсуждение некоторых критических замечаний в адрес Третьего Манифеста
К. Дж. Дейт
Поскольку эта заметка сама является введением к трем статьям, перевод которых также предлагается вашему вниманию, я ограничусь очень кратким текстом. Мне кажется, что эти статьи Дейта являются очень полезным дополнением к книге Databases, Types, and the Relational Model (про нее см. ниже и в других статьях этой серии). Вместе с тем, мне показалось, что статьи можно с пользой читать и без предварительного знакомства с этой книгой. В любом случае, я надеюсь, что эти статьи дадут вам представление о некоторых проблемах, существующих в области языковых и модельных основ баз данных, и о путях решения этих проблем, предлагаемых Хьюго Дарвеном и Кристофером Дейтом.

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

А теперь про нечто полностью вычислительное
К. Дж. Дейт
В некотором роде эта статья является продолжением, уточнением и развитием первой статьи цикла "Обсуждение некоторых критических замечаний в адрес Третьего Манифеста" "Гедель, Рассел, Кодд: Рекурсивная золотая чехарда". Что такое вычислительная полнота языка? Как связаны вычислительная полнота и неразрешимость? Полезна или вредна вычислительная полнота языка баз данных? Знал ли обо всех этих проблемах родоначальник реляционных баз данных Кодд? Обо всем этом в присущей ему полемической манере, но, как всегда, четко и убедительно пишет Крис Дейт.

Библиотека компонент Jason's AJAX
Виталий Чужа
Бесплатная с открытым исходным кодом. Содержит такие компоненты

Особенности реализации SSL шифрования в SQL Server 2005
Ян Либерман
Поддержка SSL шифрования сетевого трафика впервые появилась в SQL Server 2000 (здесь и далее я имею в виду SSL шифрование TDS трафика). В SQL Server 2005 поддержка канального шифрования была расширена.

Серия видео-роликов о SQL Server Express Edition
Константин Косинский
Нашел неплохую подборку роликов о SQL Server Express Edition рассчитанных для начинающих. Приятно, что, не смотря на фокус для начинающих, ролики не выглядят рекламными презентациями, а показывают достаточно фундаментальные вещи. Рассмотрены следующие темы:

SQL Server 2005 русская версия
Константин Косинский
Пару недель назад в MSDN подписке нашел русскую версию SQL Server 2005 и решил посмотреть, что нам изменилось и/или перевели

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

Анализ SQL Server'а на Best Practices
Константин Косинский
Практически для каждой технологии и технологического продукта, есть большие тексты описывающие Best Practices. В них обычно собраны рекомендации - что стоит, а чего не стоит делать. Проблема обычно в том, чтобы правильно их применить. А это бывает достаточно сложно, т.к. объемы этих самых Best Practices достаточно велики, а проверка соответствия требует большого количества кропотливой работы, а так как с течением времени все может измениться, то проверки нужно периодически повторять. Например, в ранее "Сайт посвященный SQL Server Best Practices" я давал ссылку на целый сайт посвященный SQL Server 2005 Best Practices. Беглого взгляда достаточно, чтобы прийти к выводу, что следить за соответствием SQL Server, хотя бы основным рекомендациям в ручную практически не возможно

Лицензирование SQL Server 2005 и виртуализация
Константин Косинский
Чисто случайно нашел сегодня интересный документ, объясняющий, как лицензируется SQL Server, если на одном физическом сервере находится более одного экземпляра SQL Server. И что будет, если у нас к этому прибавится еще и виртуализация. Так как для меня и я думаю для многих разработчиков вопросы лицензирования всегда были загадкой, то данный документ буквально открыл глаза. В документе представлены три примера лицензирования SQL Server 2005 Standard Edition и SQL Server 2005 Enterprise Edition на 4-х процессорном сервере

Резервное копирование в stand-alone продуктах
Константин Косинский
Если Вы занимаетесь созданием настольного программного обеспечения, которому нужно обрабатывать не разрозненные куски информации, а иметь небольшую базу данных, то SQL Server 2005 Express Edition неплохой выбор. Причин тому несколько

Контрольная панель производительности SQL Server 2005. Или поиск "неудачных" запросов 2
Константин Косинский
Не давно вышел интересный пакет отчетов для SQL Server Reporting Services предназначенный для наблюдения за базой данных. Называется он SQL Server 2005 Performance Dashboard Reports. Скачать его можно по следующему адресу: http://www.microsoft.com/downloads/details.aspx?FamilyID=1d3a4a0d-7e0c-4730-8204-e419218c1efc&DisplayLang=en. Состоит этот пакет из 20 отчетов и выборка информации из базы данных стоится на тех же принципах, о которых я писал в Поиск "неудачных" запросов, а именно на обращении за информацией к DMV

Здравый смысл и производительность
Константин Косинский
Довольно часто приходится слышать утверждения типа: "Фичу "A" стоит отключить, так как она может тормозить систему". Такие утверждения обычно стоиться на том, что каждая дополнительная фича стоит серьезных системных ресурсов, особенно, если она связана с журналированием операций или дополнительными проверками целостности. Постепенно системы обрастают набором рекомендаций по тюнингу, и многие ищу решения проблем производительности не в дизайне базы данных и запросах к ней, а в таких наборах рекомендаций

"Покрывающие" индексы и SQL Server 2005
Константин Косинский
Ни для кого не секрет, что индексы могу существенно ускорить выполнение запросов. И если мы часто используем запрос с условием WHERE my_filed=@my_value, то имеет смысл создать индекс по полю my_field. Но индексы бывают разные и иногда их можно использовать для ускорения запросов, даже если поле не входит в условие фильтрации

Database to SQL script
Константин Косинский
Сегодня потребовалось снять копию базы данных Microsoft SQL Server, в виде большого SQL-файла, в котором были бы и данные, и схема

Transact-SQL 2008. Конструкция MERGE
Константин Косинский
Как и при выходе предыдущих версий SQL Server, в SQL Server 2008 добавлены новые возможности в язык Transact-SQL. Основное направление большинства из них (реализованных в June CTP) направлены на упрощение жизни программиста

В SQL Server 2008 обещают добавить Intellisense
Константин Косинский
Вчера вечером принял участие в первом чате, посвященном выходу June CTP для SQL Server 2008 (полный список доступных чатов - http://www.microsoft.com/technet/community/chats/default.mspx). Первый же заданный вопрос касался именно поддержки Intellisense и на него был получен положительный ответ

Что же вышло с СТР3 SQL Server 2008
Алексей Халяко
Стали приходить вопросы, что же вышло с СТР3, где то, сё. Попробую тут коротко рассказать

Процессор запросов Microsoft SQL Server
Алексей Шуленин
Наверное, не будет большим преувеличением сказать, что процессор запросов (query processor) является стержневым элементом архитектуры серверов баз данных. Его эффективность в значительной мере определяет популярность продукта на рынке СУБД. Проектирование процессора запросов Microsoft SQL Server 7.0 ставило своей основной задачей обеспечение функциональности, быстродействия и надежности при работе с базами данных масштаба крупной корпорации. Несмотря на то, что предыдущим версиям Microsoft SQL Server уже принадлежали многочисленные рекорды по удельной (из расчета на один узел) OLTP-производительности и по критерию "цена / производительность", процессор запросов в версии 7.0 был подвергнут существенной переработке исходя из особенностей корпоративных систем, таких как наличие унаследованных источников данных, большое число пользователей, значительные объемы информации и преобладание сложных запросов по ее обработке. Эта специфика получила свое отражение в архитектуре и логике работы процессора запросов и подсистемы управления блокировками

ФСБ сертифицирует Windows
Открытые системы
Компания Microsoft сообщила, что в апреле 2007 года получено экспертное заключение ФСБ России о соответствии программно-аппаратного комплекса, реализующего функциональное назначение удостоверяющего центра (УЦ) на базе локализованной защищенной версии операционной системы Windows Server 2003 с интегрированными российскими средствами обеспечения информационной безопасности, уровню КС2 требований ФСБ России к удостоверяющим центрам. Как отметил Александр Алферов, первый заместитель Генерального директора ФГУП "НТЦ "Атлас", где проходили сертификационные испытания, "в совокупности с сертифицированными ФСБ России платформами на базе ОС Windows XP и Windows Server 2003 данный УЦ образует функционально законченный комплекс обеспечения информационной безопасности для корпоративных сетей, обрабатывающих конфиденциальную информацию". Основным отличием данного УЦ от существующих сертифицированных аналогов является сохранение функциональности исходного продукта Microsoft, включая интеграцию с доменом Microsoft Windows. Благодаря такой интеграции прикладные системы, входящие в состав домена, могут осуществлять поиск пользователей, получать информацию об отзыве сертификата и осуществлять другие необходимые действия стандартными средствами платформы Windows. Кроме того, обеспечивается администрирование УЦ с помощью стандартных средств домена Windows. Данный УЦ внедрен и успешно функционирует в органах государственной власти РФ.

Microsoft приобрела ПО управления данными
Служба новостей IDG
Корпорация Microsoft купила небольшую частную компанию Stratature - ее технологией управления данными она воспользуется в СУБД SQL Server. Stratature - разработчик механизма управления основными данными (Master Data Management, MDM) под названием EDM - он представляет собой центральный репозитарий нормативно-справочной информации, доступ к которому могут осуществлять разнородные ИТ-системы предприятия. Функции, реализуемые EDM, в Microsoft собираются предоставить бизнес-пользователям, задействовав Office в качестве интерфейса и SQL Server в качестве серверной части. Microsoft продвигает последнюю версию Office в роли платформы совместной работы. В особенности в корпорации заинтересованы в обеспечении поддержки хранения и управления неструктурированными данными, и соответствующие функции станут основной особенностью следующей версии SQL Server, - SQL Server 2008. Со временем в Microsoft планируют интегрировать функции MDM во все компоненты Office Business Platform, включая продуктовые линейки PerformancePoint, Dynamics, Project Server и SharePoint.

Доступен исправленный SQL Server 2005 Books Online (May 2007)
Александр Гладченко
12 июня 2007г. на сайте загрузки Microsoft был заменён файл дистрибутива майского Books Online для Microsoft SQL Server 2005, который первоначально был размещён там 4 июня 2007г. Обновлённая редакция майского Books Online была дополнена новыми материалами и в ней были устранены некоторые критические ошибки (например, это относится к "with Encryption"). Кроме того, начиная с июльской 2006 года редакции SQL Server 2005 Books Online, прекращен выпуск отдельного Books Online для SQL Server Express.

Books Online по SQL Server 2005
Anton Belousov
На днях обновилсмя сборник документации и полезных руководст по продукту SQL Server 2005, который называется SQL Server 2005 Books Online (May 2007).

Исполнения T-SQL команд на удаленном сервере с помощью EXECUTE AT
Lyudmila Fokina
Ну, вот. С индексами разобрались. Теперь, как и обещала, короткие (и не очень) сообщения в стиле "Tips & Tricks". Знаете ли вы, что… В предыдущих версиях SQL Server (до SQL Server 2005) команду EXECUTE можно было выполнять только на локальном сервере. В SQL Server 2005 команда EXECUTE имеет параметр AT, который используется для выполнения EXECUTE на удаленном linked сервере.

Извещение об изменениях в результатах запроса (Query Notification)
Lyudmila Fokina
Знаете ли вы, что… Query Notification в SQL 2005 - новая функциональность, позволяющая отправить запрос на SQL Server и потребовать генерации извещения в случае, если исполнение этого запроса вернет результат отличный от полученного изначально. Это значит, что если произошли какие-то изменения в данных таблиц, включенных в запрос, .NET код будет автоматически извещен.

Сравнительное тестирование производительности Microsoft Axapta v.3.0. CУБД Microsoft SQL Server 2005 и Microsoft SQL Server 2000
Мазуркин Сергей
01-16 декабря 2005 года Компания Работа на результат! в сотрудничестве с ИБМ Восточная Европа/Азия и при содействии российского подразделения Microsoft Business Solutions выполнила сравнительное тестирование производительности Microsoft Axapta 3.0 на серверном оборудовании IBM для СУБД Microsoft SQL Server 2005 и Microsoft SQL Server 2000.

XML для начинающих
Microsoft
Вероятно, вы уже слышали о расширяемом языке разметки (Extensible Markup Language, XML) и вам известно множество причин, по которым этот язык необходимо использовать в вашей организации. Но что именно представляет собой XML? В этой статье рассматриваются основы XML - дается определение и объясняются принципы работы.

[В начало]

Англоязычные статьи

T-SQL Challenge - Hierarchical Aggregates and Sorting
Itzik Ben-Gan
Given the Orders table in the Northwind database, return the following:

A Relational Model of Data for Large Shared Data Banks
E. F. Codd
This paper is concerned with the application of elementary relation theory to systems which provide shared access to large banks of formatted data. Except for a paper by Childs [1], the principal application of relations to data systems has been to deductive question - answering systems. Levein and Maron [2] provide numerous references to work in this area.

Funding a Revolution: Government Support for Computing Research
National Academy of Sciences
The latter part of the 20th century has witnessed a revolution in computing and related communications technology. As earlier eras witnessed transformations wrought by steam power, internal combustion engines, and electricity, the 1990s have seen the development, elaboration, and diffusion of a general-purpose technology that is transforming society. Computing technology has infiltrated all corners of society, from the workplace and the laboratory to the classroom and the home, changing the way people conduct business, govern, learn, and entertain themselves.

Codd's 12 Rules
E.F. Codd
Dr. E.F. Codd, an IBM researcher, first developed the relational data model in 1970. In 1985, Dr. Codd published a list of 12 rules that concisely define an ideal relational database, which have provided a guideline for the design of all relational database systems ever since. I use the term "guideline" because, to date, no commercial relational database system fully conforms to all 12 rules. They do represent the relational ideal, though. For a few years, scorecards were kept that rated each commercial product's conformity to Codd's rules. Today, the rules are not talked about as much but remain a goal for relational database design. Following is a list of Codd's 12 rules, including his original name for each rule and a simplified description. I also have included a note where certain rules are problematic to implement. Don't worry if some of these items are confusing to you, as we move further through this newsletter series we will fill in the details.

The 1995 SQL Reunion: People, Projects, and Politics
Systems Research Center
A reunion of people who worked on System R and its derivatives, including SQL/DS, DB2, and R*, was held at Asilomar on May 29, 1995. This is an edited transcript of the day's discussions, incorporating changes provided by the speakers. It provides an informal but first-hand account of the birth of SQL, the history of System R, and the origins of a number of other relational systems inside and outside IBM.

The Third Manifesto
Hugh Darwen and C.J. Date
Welcome to The Third Manifesto (TTM), our proposed foundation for future database systems presented in Databases, Types, and The Relational Model: The Third Manifesto, 3rd edition, Addison-Wesley, 2006 (ISBN: 0-321-39942-0).

A Call to Arms
JIM GRAY, MARK COMPTON
Long anticipated, the arrival of radically restructured database architectures is now finally at hand.

Truth, Fads and Principles: What's Wrong with the Database Industry?
Fabian Pascal
This issue of Data Discussions is with Fabian Pascal, an independent industry analyst, consultant, author and lecturer specializing in database management. What makes Mr. Pascal especially "unique" is his reputation for taking a highly critical and contradictory position in almost all his public opinions. For example, he's a prolific writer who calls his regular columns "Setting Matters Straight" (quarterly, on www.TDAN.com) and "Against the Grain" (on www.DBAzine.com). His own web site is called DATABASE DEBUNKINGS (www.dbdebunk.com). And after a recent presentation, I told him the audience obviously liked his talk, to which he replied "I must have done something wrong." Clearly he doesn't suffer fools, so lest I demonstrate my own ignorance and incur his wrath, I enlisted some help for this interview from my colleagues Bob Seiner of TDAN.com and Craig Mullins of BMC Software and DBAzine.com. Both gentlemen have an awareness of Fabian's hot buttons.

ON PRACTICALITY OF THEORY AND THE GUARANTEED LOGICAL ACCESS RULE
Fabian Pascal, C. J. Date, Hugh Darwen
"Theory is Practical" has been proven time over time over my last 25 years as a DBA. By enforcing the theory of the relational model on a SQL DBMS, the result is an RDBMS that works and can be used to get practical solutions to a problems. Some rule enforcements include insuring that all SQL Tables have a primary key, that all SQL tables with a surrogate key also have a candidate key, that integrity rules are enforced by the RDBMS, and no nulls allowed. I have found that most SQL RDBMS performance problems are caused by violating the relational model principles and the remainder are caused by the operating system or computer hardware.

DAWN WOLTHUIS' "PROOF"
Fabian Pascal
A while ago Jonathan Leffler brought to my attention an exchange about multi-value (MV) DBMSs in the news group comp.databases.pick, where in response to a reference to my debunkings of MV technology (On "Multivalue" Technology, MultiValue Lacks Value, More on "Multivalue" Databases), Dawn Wolthuis (DW) boasted:

Steve Jones on TechEd2007 and SQL2K8 Manageability Features
Dan Jones
@ TechEd 2007 I presented an overview session on new manageability features in SQL Server 2008. SQL Server Central's Steve Jones blogged about the session. Steve provides a pretty accurate account of the session (thanks Steve). This is mostly a straight forward report with a little editorial sprinkled in here and there.

Get backup and restore performance stats with a DMV
Satya SK Jayanty
Normally the backup and restore operation will be quick enough or depends upon the server configuration to complete. Say if you have started with a 2GB size of database and over the time as that database is updated, the amount of data that is included in differential backups increases.

Back to the Basics: Foreign Keys
Decipherinfosys
A couple of days ago, we had posted about the "IDENTITY_INSERT" option in SQL Server in our "Back to the Basics" series. In this post, we will look at one of the commonly overlooked facts about composite columns that make up a foreign key. As you know, a foreign key constraint is essentially a column or a group of columns in the child table that are used to establish a link/reference to the parent table. This constraint can be defined on either the primary key column(s) of the parent table or any other alternate/candidate keys of that table i.e. any other not null column or set of columns that make a record unique in that table. It can also reference the column(s) in the same table in case it is a recursive relationship i.e. a self referencing relationship. The column(s) in the child table on which the foreign key is defined can be nullable.

Katmai\SSIS: C# comes to the script task/component
Jamie Thomson
"Why the doesn't SSIS support C# for the script task and script component?" I've heard the above complaint, in various different ways, many many times over the past 18 months since SQL Server 2005 was released. Its a valid complaint to which there is a valid answer (which I'm not going to go into right now). Regardless, with the arrival of katmai the complaint won't be heard any more. The script task and the script component now feature support for C#.

Katmai SSIS data flow task improvements
Michael Entin
With first Katmai (SQL Server 2008) CTP out, I think it is time to blog about some performance and scalability improvements in this release.

SSIS Backpressure Mechanism
Michael Entin
One of the mechanisms that SSIS data flow engine utilizes to achieve high performance is "back pressure". Let's consider a simple package with a source and destination. What happens if the source is fast and destination is slow? Say source is huge local raw file and destination is a remote relational database. If we read the source data with full speed, we would need a lot of memory to store all the data we've read, but could not write yet. In many cases we'd simply run out of memory or had to swap data to hard drive.

Using GROUP BY to avoid self-joins
Jeff Smith
Sometimes, it appears that a necessary solution to common SQL problems is to join a table to itself. While self-joins do indeed have their place, and can be very powerful and useful, often times there is a much easier and more efficient way to get the results you need when querying a single table.

Object-Oriented Database Concepts: Table Inheritance in SQL Server
Jeff Smith
Quite often, in both the SQLTeam forums and in my personal data modeling experience, I come across situations where we have many different, specific types of entities that we are modeling, but we'd like them to all have certain attributes or relations in common. For example, a question came up recently about modeling the following in a "School" database:

SQL Server 2005: CROSS APPLY
Jeff Smith
If you are using SQL 2005 and find User Defined Functions helpful, be sure to read my new article over at SQLTeam:

Every Noun Can Be Verbed...
Pat Helland
As I watch the REST versus non-REST discussion, it occurs to me that there are a number of aspects to the debate. While I am not attempting to address all of these aspects, I think that part of the discussion revolves around DATA versus BEHAVIOR.

Query Failure with Read Uncommitted
Craig Freedman
Over the past month or so, I've looked at pretty much every isolation level except for read uncommitted or nolock. Today I'm going to wrap up this series of posts with a discussion of read uncommitted. Plenty has already been written about the dangers of nolock. For example, see these excellent posts by Lubor Kollar of the SQL Server Development Customer Advisory Team and by Tony Rogerson.

Katmai is Slowly Becoming the Best Platform for Building Offline Applications
Rafik Robeal
Katmai is the code name of the next release of SQL Server slated for next year. Last week, CTP3 was released to public, more info here. The new features included in CTP3 are eye popping especially if you are in the sync space. You might think that Sync Services was the driver for many of these features, however, that is not true. CTP3 has new components that I think are very useful and will help developers build offline application faster. That's not to say that there won't be sync specific features coming up later on, but I will refrain from mentioning anything now and wait till things unfold. For now, let's talk about CTP3 features:

PerformancePoint Server 2007: Monitoring and Analytics CTP3 Arrived today
Patrick Husting
Well guess what arrived on my shared drive today. A release candidate for CTP3. Did the installation today and it went well. Fired it up and it was quite a bit faster... I'll be playing with it over the next couple weeks. I'll be giving blow by blow reports the new weeks. Below is the installation screen. Much better install...

Get a blocking list for the objects & indexes using DMV
Satya SK Jayanty
Yet another help from DMV I would like to share here, say on a SQL Instance you are getting low-level I/O and blocking intermittently. For the I/O issues using SYSMON (PERFMON) is ideal to get more information during the busy times and low-usage times (for memory too WhatUNeed2Check post).

The Story of Max Database Size (Connection String Parameter)
Laxmi Narsimha Rao
Maximum Database Size is NOT a persistent configuration (It is NOT stored in database file). SQL CE creates shared memory to support multi-connection scenarios. SQL CE maintains an entry for each page of the database file, in this shared memory. Because we don't always grow to 4 GB, it is not wise to allocate shared memory to accommodate all page entries/references to support 4 GB. This means, we should have a default for max no. of page references (max database size) in shared memory to be reserved.

Connection String - Database Creation-time Only Options
Laxmi Narsimha Rao
In this article, we will discuss the Connection String Parameters that are meant for use only for database creation and not for connection open to an existing database.

Favorite BI Features in SQL Server 2008
Brian Knight
If you haven't heard yet, CTP 3, which is a public beta of SQL Server 2008 has now been released and can be downloaded at the Connect website. After a bit of unscientific research, here's my top 5 BI features in SQL Server 2008. It's ordered in my priority order. It's important to note that some of these features have not been introduced in CTP 3 yet but will be coming soon.

Distinct Counts in Analysis Services 2005
William Pearson
In a couple of earlier articles of this series, Introduction to MSSQL Server 2000 Analysis Services: Distinct Count Basics: Two Perspectives and Introduction to MSSQL Server 2000 Analysis Services: Manage Distinct Count with a Virtual Cube, I introduced the general concept of distinct counts, discussing why they are useful (and often required) within the design of any robust analysis effort. In these and other articles, I described some of the challenges that were inherent in their use in Analysis Services 2000, before undertaking practice exercises to illustrate solutions to meet example business requirements.

Attaching Detached SQL Databases To A SQL Server
Don Hite
Sometimes you may find that you want to have a copy of an existing production SQL database on another SQL server or on your laptop for use at home or on the road. The process for performing this task is a relatively simple one and the only time consuming process is copying the necessary files from one server to another. This time depends on the size of the database files and available network bandwidth.

Linking SMS And MOM Server Databases For Distributed Queries
Don Hite
This post will show you how to retrieve data that resides on a remote MOM database server from an SMS database server for writing distributed queries.

Monitoring SQL 2005 Performance Statistics With The DBCC SqlPerf Command
Don Hite
The SqlPerf Database Consistency Check (DBCC) command most of which is undocumented with the exception of the LogSpace option in the SQL Books On Line (BOL) can be used to monitor the performance statistics of your SQL 2005 database.

Using The DBCC ErrorLog Command To Cycle SQL Error Log Files
Don Hite
Whenever your SQL server is restarted the Error log is recreated as errorlog (With No file extension) and your existing error log is renamed to errorlog.1 while the previously existing errorlog.1 is saved as errrolog.2 and so on.

SQL 2005 Class Property Viewer
Don Hite
This HTA script will write all of the available SQL class properties to the current window for the class name specified in the specified input text box for your scripting reference

Documenting Your SQL Servers Configuration
Don Hite
Documenting your SQL servers is one of those tasks that are crucial and necessary for your infrastructure especially if you have more than one DBA in your organization or have junior admins in your group. It also happens to be one of those tasks that I have performed many times for the various companies and organizations that I have supported over the years and it quite frankly is very boring and can be quite tedious at times.

SQL Server MPS Reporting tool Download
Don Hite
The Microsoft SQL Server Microsoft Product Support (MPS) Reporting tool (Mpsrpt_Sql.Exe) is a downloadable application containing scripts and other utilities that will capture your SQL server's system information and configuration as well as runs diagnostics on your system about your SQL server.

Exploring The SQL 2005 Table Sample Query Clause
Don Hite
If you need to query a SQL table and don't necessarily want to return all of the records or rows especially if it is a very large table containing thousands of records you can write your query so that it returns only a limited or a sampling of the table's data.

SQL SERVER - 2005 T-SQL Paging Query Technique Comparison (OVER and ROW_NUMBER()) - CTE vs. Derived Table
Pinal Dave
I have received few emails and comments about my post SQL SERVER - T-SQL Paging Query Technique Comparison - SQL 2000 vs SQL 2005. The main question was is this can be done using CTE? Absolutely! What about Performance? It is same! Please refer above mentioned article for history of paging.

SQL SERVER - Cannot resolve collation conflict for equal to operation
Pinal Dave
Cannot resolve collation conflict for equal to operation. In MS SQL SERVER, the collation can be set in column level. When compared 2 different collation column in the query, this error comes up

Documents in SQL Server 2008
Rob Farley
One of my favourite aspects of SQL Server 2008 is the fact that you can store documents (well, files) in the database. Annoyingly, this doesn't seem to be implemented in the June 2007 CTP.

DATE and TIME data types in SQL Server 2008
Rob Farley
Sick of using DATETIME to store values which are always going to be the date-part only? Yeah, me too. This is why SQL Server 2008 has new data types called DATE and TIME, which store just the DATE or TIME component of a DATETIME, respectively. Half the size, and much more appropriate if that's all you need.

SQL Server 2005 Books online May 2007 updates are available now
Satya SK Jayanty
Yet another update to SQL Server 2005 Books Online, though it states May 2007 update that was released on June 06th 2007!

Alert when a specific SQL instance service has been started
Satya SK Jayanty
Оne of the IT support team member asked me the question "Is there a way to have SQL Server 2005 send some sort of email notification when it starts up?" The solution is straight forward and yes you can have such alerts or notifications based upon the facilities deployed on that SQL instance such as SQLMail or alerts using NET SEND operators. The option is to setup a scheduled job on that SQL instance SQLAgent to send a notification as an email, ensure that the SQLmail profile has been setup properly in order to send the notification. SP_PROCOPTION is useful for such instant execution of jobs whenever the SQL Server service is started. Make a note of extract from SQL Server Books online in this regard:

SQL Server performance tuning worst practices
Jeremy Kadlec
Sometimes SQL Server performance tuning best practices do not hit home, but the worst practices do. In part one of this two-part series, we will address a number of the worst practices for SQL Server performance that have been found in the field. These primarily relate to the system performance over the lifecycle of an application. We also will make recommendations for correcting these practices and improving overall system performance.

Process Delegation Workbench
Robyn Page and Phil Factor
Here is a way of designing part of a SQL Server Database application so it seems faster to the user.

SSIS Programming
U.K Padmaja
Making the transition from DTS in SQL Server 2000 to SSIS in SQL Server 2005 is quite a leap as the entire paradigm of ETL development has changed. New author U. K. Padjama brings us an article that compares DTS to SSIS and shows how to get started.

Bridging the Impedance Mismatch Between Business Intelligence and Service-Oriented Architecture
Arnon Rotem-Gal-Oz
Business intelligence (BI) and service-oriented architecture (SOA) have conflicting principles and needs. This article will show you how to make peace between them. (6 printed pages)

Mirrored Backups
Andy Warren
One very interesting new feature in SQL Server 2005 is the ability to run backups to multiple locations, ensuring you have a second copy of the backup file if your first one were to be corrupted. SQL Server expert Andy Warren takes a look at how this feature works and the implications of using it.

SqlCredit - Developing a Complete SQL Server OLTP Database Project
Rob Garrison
The purpose of the SqlCredit series is to demonstrate the database design and development portion of a development project. We will build a complete, functioning, tested credit card database to illustrate the complete software development lifecycle. Microsoft provides us with AdventureWorks, but all we get to see is the final product. This series will be about the process that results in a well-designed, well-coded, and well-tested database. Part of the plan is to do an initial design that actually has some built-in "refactoring opportunities" (bits that we will fix later in the series). But overall, the design should be solid, scalable, well-coded, and well-tested. When the series is complete, the code-base will allow a reader to create a complete database with tables, stored procedures, triggers, functions, automated unit tests, and sample data by running a simple script. This is not an academic exercise; it is a pragmatic design based on goals of scalability, performance, and quality.

Introduction to SQL Server Everywhere
Jacob Sebastian
SQL Server 2005 has grown to include more versions of the platform than ever before. One of the newest is SQL Server Everywhere, now known as SQL Server Compact Edition. Jacob Sebastian brings us a great introduction for you to understand how this version disappears from the others and where it can be used.

SqlCredit - Part 2: Creating the Database, Tables, CRUD Procedures
Rob Garrison
This is part 2 of a series. If you have not read part 1, you can find it here.

Good Info about Non-Clustered Indexes
Glenn Berry
Paul Randal talks about the fate of non-clustered indexes when the table structure changes (in both SQL Server 2000 and 2005). There are some interesting changes in behavior between the two versions. Basically, SQL Server 2005 does not automatically rebuild the non-clustered indexes quite as often as SQL Server 2000 does.

Non-standard RAID levels primer: RAID 5E and 5EE
Scott Lowe
In this article on non-standard RAID levels, Scott Lowe describes the advantages and disadvantages of RAID 5E and RAID 5EE.

Get info from multiple tables. Join problem? Options
Joe Celko
SQL Apprentice Question: The Stored Procedure below returns article attributes for my articles (tblArticleAttribute). This works fine IF NOT tblArticleAttribute.Content is empty, then it returns all templatedefinitions with the Content. But, if the Content is empty, it also has to return all template definitions, but with the content fields empty (now it returns nothing). This is because I bind this information to a dynamic form, and if (example) the title or ingress is empty the textfields (definitions) should be shown with no text. Then the user can fill inn text an save it.

Calc minutes between days
Joe Celko
SQL Apprentice Question: I am using DATEDIFF('n',EndTime, StartTime) to return minutes between 2 datetime columns. The problem is that when the StartTime is 23:00:00 PM and EndTime is 07:00:00 AM I get a negative # of minutes. How can get 480 minutes from this calculation. Note the 23:00:00 is yesterday and the 07:00:00 is today. Thanks

add blank row between groups of rows to separate them?
Joe Celko
SQL Apprentice Question: I want to add a blank row between groups of rows to separate them

Help writing query to return data if there are 4 consecutive holidays
Joe Celko
SQL Apprentice Question: I need to write a query that returns data if an employee has taken four or more consecutive holidays. I need to get the startdate and the employee name. The employee works either a 4X10..or an 8X5 shift... Also, the employee need not have an off only on Sat and Sun...Some of them work on the weekends and have an off during the weekdays.

giving one union preference
Joe Celko
SQL Apprentice Question: Let say I have a query with the following structure

Using Soundex to identify possible duplicates
Joe Celko
SQL Apprentice Question: In a table that has person forename and surname, is it possible to use soundex to identify for every row in the table what similar matches there are in the same table?

Database Design Question
Joe Celko
SQL Apprentice Question: I'm fairly new to database design, having only really worked with existing tables etc in the past

self-referencing constraint with identity column?
Joe Celko
SQL Apprentice Question: have a table that requires to have a self-referencing constraint to enforce a parent-child type of relationship

Microsoft Issues Hotfix for SQL Server 2005 Ordered View and Inline Function Issue
Roger Jennings
My September 11, 2006 SQL Server 2005 Ordered View and Inline Function Problems post described a change of behavior between SQL Server 2000 and 2005 when displaying views created with a SELECT TOP 100 PERCENT ... ORDER BY Whatever query: SQL Server 2000 sorts the resultset and SQL Server 2005 [Express] doesn't.

Sahil Malik Takes on LINQ, LINQ to SQL, and Entity Framework
Roger Jennings
From the "How Did I Miss This?" department. (I subscribe to Sahil's blah!bLaH!BLOG from IE7, but his June 9, 2007 post in question probably was buried under a long SharePoint entry. Thanks to Sam Gentile for yesterday's New and Notable item, which also includes a link to Ian Cooper's June 10, 2007 Being Ignorant with LINQ to SQL post, the subject of this review.)

Creating New Partitions with AMO
Jesse Orosz
One of the things that suprised me at the BI Convention last month was how many people fully reprocess partitions every time new data is added. Several people said they spent upwards of three hours a night adding new data. Most just used the built in SSIS tools. Even though our main fact table has 5 billion + rows and grows by about 50 million a day, the nightly processing (dimension excluded) takes less than 15 minutes. You must, must, must use AMO if you want any kind of efficieny in building partitions.

Books Online Innovations
Buck Woody
It's just documentation - right? Well, there's actually a bit more to it than that. Of course, we update the content of Books Online all the time, as I've mentioned before. But we've also innovated in the way that we present and deliver the content. I asked Bryan, a friend that works here with me, to let me share this list:

AMO Error when adding an attribute to an existing dimension: The transaction cannot be committed because one or more objects were invalidated during the transaction
Russell Christopher
Today's tale from the front: I needed to write some POC code and kept on running into the error below when attempting to Update() the dimension I had added an attribute to:

How To: Configure a For Loop Container
Julian Kuiters
Start in the package Control Flow, with no object selected (Press ESC in the main window).

SqlCredit - Part 3: Schema/Proc Updates and Automated Unit Testing
Rob Garrison
This is part 3 of a series. If you have not read part 2, you can find it here. In this month's installment, we will discuss updates based on feedback from part 2 as well as introduce automated unit testing.

New Features in Reporting Services 2005
Vincent Rainardi
Reporting is one of the key parts of any data warehouse or business intelligence systems. Vincent Rainardi has brought us some great information on data warehousing and now turns his attention to some of the very useful new features in Reporting Services 2005.

Data modelling layers: do you wanna get logical or physical
David Norfolk
Interview: In the bad old days we used to progress from "current physical" to "current logical" models. We then used to transform the "current logical" to the "new logical" - and about then the deadline cut in and we scurried about hacking the code for the new system which is about as "new physical" as you can get. No wonder the agile people noticed that it made more sense to devote your time and intelligence to the "new physical", which wasn't going to be thrown away soon after you finished.

changing order of records
Joe Celko
SQL Apprentice Question: hi, i've got a problem. i need to change order of records in my table . here is the table

Need urgent help on a QUERY
Joe Celko
SQL Apprentice Question: Given: …. I need a query that would look like: ….

Question regarding multiple data sources and coalesce
Joe Celko
SQL Apprentice Question: I inherited a db that is pulling data from 5 different sources and storing them in 5 different tables. The tables all have the same basic data, minor differences based on source. The company currently creates a "summary" table by joining the 5 source tables and using coalesce( ) to display data from preferred data sources if it is available from there.

SQL Server Reporting Services - Lessons Learned In Development and Deployment
Bill Jones, Jr.
The primary goal of this article is to communicate from "tech to tech" so that developers will be able to quickly build on what we have already learned. We walk through creating a report from the Reporting Services sample database to provide a framework for sharing what has been learned.

Replication agent Profiles in SQL 2005
Hilary
I got a call yesterday from a friend of mine complaining about SQL Server Management Studio's Replication Wizards and Interfaces. His specific complaint revolved around how difficult it was to find let along make changes to the agent profiles.

MS Search stop limit reached. The full-text query may have returned fewer rows than it should
Hilary
When you are searching large catalogs in SQL 2005 Full-text search you may occasionally receive the above warning when your search takes a long time.

[В начало]

ФОРУМ SQL.RU

Самые популярные темы недели

и снова deadlock :-(
Самый быстрый курсор
Я не понимаю как сделать trigger :(
Как приаттачить файл без .ndf?
Preview upcoming Releases: SQL Server 2008 June CTP now available!
ВОЗМОЖНО ли?
Отчего умер SqlAgent
An unexpected error happened during this operation
Firebird
Своя функция identity
shrinkfile
Настройка автоматического backup
Как перевести формат TDateTime Delphi в формат DateTime MS SQL Server?
тормоза приложения : latch waits/sec
ПЕРЕНОС БАЗЫ ДАННЫХ ИЗ SQL в MySQL
Как заставить сервер ругаться, когда строка обрезается
как сделать неизменяемый столбец?
Небольшая самодельная тулза для отображения блокировок...
слишком длинное ожидание блокировки
IDENTITY

[В начало]

Вопросы остались без ответа

Как обрабатывать уведомление?
Microsoft SQL Server 2005 JDBC Driver
Ищу DBArtisan 5.4. Кто может помочь?
DTS - DOS в WIN кодировку
Перекодирование строки в MSSQL
Удаление на linked server через Oracle OLE DB
Транзакции
Послать мыло с картинками

[В начало]

#362<<  #363  >>#364
Rambler's Top100 Рейтинг@Mail.ru  Administrator: Обратная связь 
Copyright: SQL.Ru 2000-2013