Отправляет email-рассылки с помощью сервиса Sendsay

MS SQL Server

  Все выпуски  

MS SQL Server - дело тонкое...


Информационный Канал Subscribe.Ru

#240<<  #241

СОДЕРЖАНИЕ

1.СТАТЬИ
1.1.Менеджер памяти SQLOS и SQL Server Buffer Pool
1.2.Can you resolve collation conflict?
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа

Администраторы баз данных, защищайте свои сервера!

Честное слово, обидно… за нас.
Корпорация Symantec выпустила последнее издание отчета об опасностях, связанных с работой в интернете (Internet Security Threat Report). Вот строки из этого отчёта:
"В течение третьего полугодия подряд наиболее распространенной (22% всех нападений) являлась атака Microsoft SQL Server Resolution Service Stack Overflow, ранее известной как Slammer". Это говорит о том, что не перевелись ещё в сети не пропатченные сервера.

УВАЖАЕМЫЕ DBA!!! Пожалуйста, устанавливайте SP3a сразу же после установки сервера. Не оставляйте не пропатченные сервера в сети (локальной и особенно в сети интернет), даже если Вы уверены в её защищённости. Убедительно прошу Вас просканировать свою сеть специально выпущенными MS утилитами, дабы выявить все SQL Server 2000 и MSDE. Проверьте ещё раз, что версии этих серверов не моложе 8.00.760. Помните, Slammer будет жить до тех пор, пока в сети есть не пропатченные сервера!

SP3a и последние фиксы (из доступных) Вы найдёте тут: http://www.sql.ru/articles/Publications.shtml#fix

SP3 для MSDE и OLAP можно найти на сайте Microsoft: Microsoft SQL Server 2000 Service Pack 3a

Имя файла Размер файла Для чего он применим
sql2kasp3.exe 44617 КБ Analysis Services
sql2kdesksp3.exe 70815 КБ MSDE
sql2ksp3.exe 56453 КБ SQL Server 2000

Обсудить в форуме

C уважением,
Александр Гладченко.

СТАТЬИ

Менеджер памяти SQLOS и SQL Server Buffer Pool

По материалам статьи Slava Oks: SQLOS's memory manager and SQL Server's Buffer Pool
Перевод Александра Гладченко

В SQL Server 2005 менеджер памяти SQLOS состоит из нескольких компонент, таких как: Узлы памяти (Memory Nodes), Клерки памяти (Memory Clerks), Кэши памяти (Memory Caches) и Объекты памяти (Memory Objects). На Рисунке 1 изображёны компоненты менеджера памяти и их связи:

---------------- | Memory Object | ---------------- | | V ---------------- | Page Allocator | ---------------- / \ / \ \/ \/ --------------- --------------- | Memory Clerk | | Caches | --------------- --------------- \ / \/ \/ ---------------- | Memory Node | ---------------- Рис. 1

[В начало]

Memory Node

Узлы памяти (Memory Nodes) не являются клиентами Memory Manager. Это внутренние объекты SQLOS. Главная задача Memory Node в том, чтобы предоставить место для распределения памяти. Такие узлы состоят из нескольких программ, отвечающих за распределение памяти. Существует три основных типа таких программ. Первый тип - это программы распределения страниц памяти. Второй тип - программы распределения виртуальной памяти, использующие интерфейсы Windows VirtualAlloc API. Третий тип - это программы распределения Shared Memory (распределяемой памяти), которые полностью основаны на интерфейсах Window's file mapping API.
Чаще всего SQLOS использует программы страничного распределения памяти. Причина, по которой их называют программами распределения страниц, состоит в том, что они распределяют память из подмножества страниц SQLOS. Размер страницы - 8 КБ, такой же, как и размер страниц в базах данных SQL Server. Как Вы поймёте далее, это не простое совпадение.
Существует четыре программы для распределения страниц. Программа для распределения одиночных страницы, программа для распределения нескольких страниц, программа для распределения больших страниц и программа для распределения зарезервированных страниц. Программа распределения одиночных страниц может единовременно работать только с одной страницей. Программа распределения нескольких страниц, как Вы могли догадаться, обслуживает единовременно целый набор страниц. Программа распределения больших страниц используется для больших страниц. SQLOS и SQL Server используют большие страницы, чтобы минимизировать TLB (translation look aside buffer) присутствующий при доступе к активным структурам данных. В настоящее время большие страницы поддерживаются только в архитектуре IA64 или x64, если в системе не менее 8GB оперативной памяти. Размер большой страницы на IA64 равен 16 МБ. Программа последнего типа предназначена для распределения зарезервированных страниц, и может использоваться для распределения специального набора страниц, зарезервированных для критических положений, то есть когда SQLOS испытывает недостаток памяти. Рисунок 2 показывает узел памяти и его программы распределения.

---------------------- ------------- ------------------------- | Large Page Allocator |<--------| Memory Node |------->| Reserved Page Allocator | ---------------------- /-------------\ ------------------------- / | \ / | \ / | \ / | \ \/ \/ \/ -------------------- ---------------------- ---------------------- | VM & SM Allocator | | Single Page Allocator| | Multi Page Allocator | -------------------- ---------------------- ---------------------- Рис. 2

В настоящее время SQL Server не имеет динамически управляемого представления (DMV), которое показало бы набор всех узлов памяти и информацию об их программах распределения. DBCC memorystatus, о котором мы поговорим ниже, кажется наиболее близким по смыслу, но он представляет информацию об узлах центрального процессора, а не об узлах памяти. Но если вспомнить, что узлы процессоров являются подмножеством узлов памяти, станет ясно, что представленная DBCC memorystatus информация достаточна для понимания того, как распределяется память в системе.

[В начало]

Memory Clerks

Узлы памяти скрыты от использующих Memory Manager компонент. Если клиенту Memory Manager необходимо распределить память, он должен сначала создать Memory Clerk. Есть четыре типа Memory Clerk-ов: универсальное хранилище, кэш - хранилище, пользовательское хранилище и объектное хранилище. Последний тип несколько замысловат. Наряду со своими стандартными функциональными возможностями, Memory Clerk-и обеспечивают ещё и кэширование данных.
Можно определить понятие Memory Clerk как сборник статистики. Он поддерживает те же типы программ распределения, как и узлы памяти, а так же предоставляет возможность потребителям памяти большого объёма подключиться к инфраструктуре брокера памяти (автор опишет эту инфраструктуру в одной из следующих статей). У Memory Clerk-ов есть несколько глобальных переменных, поддерживаемых SQLOS. В SQLOS для потребителей средних и больших объёмов памяти лучше использовать отдельных, собственных клерков, чтобы облегчить понимание того, как происходит утилизация памяти этим компонентом. Инфраструктура Memory Clerk предоставляет возможность отслеживать и управлять объемом памяти, используемым компонентом памяти. Каждый процессорный узел имеет список Memory Clerk-ов, который мы можем безопасно просматривать во время работы. SQL Server имеет специальное DMV: sys.dm_os_memory_clerks, которое показывает информацию о клерке. Кроме того, сводная информация о клерке может быть получена из состояния памяти посредством DBCC команд.

[В начало]

Объекты памяти

Объект памяти SQLOS - это динамическая память, хип. Для распределения память объекту памяти требуется помощь Memory Clerk. Разработчики поддерживают три типа объектов памяти:

  1. Переменные объектов памяти - это постоянный хип (динамическая память).

  2. Приращение объектов памяти - маркированная и уменьшаемая динамическая память.
    Такая политика распределения очень удобна во время исполнения и трансляции процессов. Обычно оба описанных процесса происходят в две стадии. Первая стадия обрабатывает рост используемой памяти, а вторая обслуживает сокращение использования памяти. Если процесс изолирован, при освобождении памяти не будет вызываться ни один из деструкторов. Это существенно повышает производительность.

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

Фиксированным размером для последнего типа объекта памяти является 8 КБ. Это такой же размер, как и у страницы SQLOS. Кроме того, это означает, что объект памяти мог быть создан из Memory Clerk посредством одной из программ распределения страниц (Это еще один чрезвычайно важный момент! Его нужно запомнить, пока автор не опишет SQL Server Buffer Pool), SQL Server запрашивает специальный DMV, чтобы получить все объекты памяти в его процессе: sys.dm_os_memory_objects.
Как Вы заметили, оба, Memory Clerk и DMV для объектов памяти, представляют колонку программы распределения страницы (page_allocator_address). Автор представил программу распределения страницы на Рисунке 1. Для распределения страниц, под прикрытием объектов памяти используются интерфейсы программ распределения страниц Memory Clerk-ов. Это полезно знать, когда Вы хотите подключиться к Memory Clerk-у и к DMV объекта памяти.
До сих пор автор описывал внутреннюю структуру менеджера памяти SQLOS. Теперь пришло время поговорить, как все это вписывается в SQL Server.

[В начало]

Buffer Pool

Теперь мы добрались до того места, где всё становится очень интересным. В этой главе всё, о чём уже говорил автор, включая управление памятью, должно встать на свои места.
Помните, что у SQL Server имеется два параметра настройки памяти, которыми Вы можете управлять посредством sp_conifigure. Это максимальный и минимальный размер занимаемой сервером памяти. Автор не уверен, знаете ли Вы, что эти две установки в действительности управляют размером общего буферного пула. Они не управляют общим количеством физической памяти, используемой SQL Server. В реальности невозможно управлять объемом памяти, используемым SQL Server, потому что могут существовать внешние компоненты, загруженные в серверный процесс.
После запуска SQL Server, в течение процедур инициализации выясняется сколько виртуального адресного пространства (VAS) нужно зарезервировать для использования под Buffer Pool. Решение это базируется на том количестве физической памяти (RAM), которое доступно в блоке. Если размер доступной физической памяти равен или больше чем размер VAS, её можно использовать, помня, что VAS - это ограниченный ресурс особенно на x86, где VAS составляет 256 МБ для внешних компонент плюс несколько потоков, которые установлены для SQL Server, и число которых нужно умножить на 512 КБ. Как Вы помните, 512 КБ - это размер стека потока в SQL Server. В заданной по умолчанию конфигурации с физической памятью большей чем 2GB, Buffer Pool потребует 256MB+256*512KB = 384 МБ памяти в VAS. Эту область иногда принято называть MemToLeave, но в действительности это не правильно. SQL Server мог бы ограничиться использованием этой части VAS, но автор далее продемонстрирует когда такого может не случиться. Вы могли вспомнить ещё один параметр, который иногда рекомендуют использовать, если SQL Server начинает выдавать ошибку: "Can't Reserve Virtual Address Space". Первые 256 МБ - это то, чем управляет параметр запуска сервера -g. Если Вы установите -g 512 МБ, то размер VAS, который BP не сможет использовать, будет равен 512MB+256*512KB = 640 МБ. По сути, не имеет смысла устанавливать параметр -g 256 МБ, поскольку это как раз то значение, которое применяется по умолчанию.
Как только BP определит необходимый размер VAS, он сразу будет задействован, и будет зарезервировано всё, что необходимо. Чтобы в этом убедиться, Вы можете контролировать с помощью системного монитора число виртуальных байт распределённых для SQL Server или можно воспользоваться представлением vasummary, о котором автор писал в предыдущих статьях. Если всё нормально, Buffer Pool не может получить одним куском больше памяти, чем приблизительно выдано VAS для SQL Server, и Вы увидите несколько больших зарезервированных областей. Это поведение существенно отличается от поведения многих других серверов, которые Вы, возможно, наблюдали. Иногда это воспринимают как утечку VAS в SQL Server. В действительности это поведение полностью соответствует дизайну.
Buffer Pool задействует страницы по требованию. В зависимости от востребованости внутренней памяти и состояния внешней памяти, будет определён получатель, объем памяти, и принято решение, что нужно задействовать до того, как память можно будет утилизировать. Постоянно происходит извлечение и перевычисление системной информации и потребителя листания. Запрашиваемая память не может превысить максимальную память, которая указана в параметре настройки сервера: max server memory. Даже если установит min server memory равным max server memory, Buffer Pool задействует эту память только по требованию. Вы можете наблюдать такое поведение, контролируя соответствующие сообщения в Профайлере.
Размер страницы для базы данных SQL Server равен 8 КБ. Buffer Pool - это кэш страниц данных. Следовательно, Buffer Pool оперирует страницами размером 8 КБ. Он задействует пока ещё свободные блоки памяти, и только порциями по 8 КБ. Если внешние компоненты решают заимствовать память из Buffer Pool, они тоже смогут получить блоки только размером 8 КБ. Такое поведение блоков не сохраняется после возвращения их в обычную память. Интересный факт? Это означает, что для компонент SQL Server использование Buffer Pool может осуществляться только под управлением менеджера памяти, и до тех пор, пока он распределяет буфера по 8 КБ (иногда страницы, распределенные для BP, называю захваченными). На Рисунке 3 показано взаимодействие SQLOS и Buffer Pool.

----------------- | Memory Node | ----------------- | | V ------------------------ | Single Page Allocator | ------------------------ | | V ----------------- | Buffer Pool | ----------------- Рис. 3

Менеджер памяти SQLOS может динамически настраиваться для использования специализированной программы распределения одиночных страницы. Это происходит во время запуска SQL Server, когда настраивается Buffer Pool с целью выбора программы для распределения SQLOS одиночных страницы. С этого момента Buffer Pool поддерживает все динамически распределенные одиночные страницы. Например, можно вспомнить, что объект памяти будет использовать для своих нужд по 8 КБ. Когда компонент создает объект памяти, распределение осуществляется программой SQLOS для одиночных страницы, которая использует BP. При описании менеджера памяти автор упоминал, что каждый большой компонент имеет собственного Memory Clerk-а. Это означает, что Buffer Pool также имеет своего собственного Memory Clerk-а. Как же это возможно, если BP зависит он SQLOS Memory Clerk-а, а менеджер памяти SQLOS, в свою очередь, полагается на BP? Это обычная дилемма первичности курицы или яйца, которую можно часто наблюдать в операционных системах. Ключ к пониманию здесь в том, что Buffer Pool никогда не использует никаких программ SQLOS для распределения страницы. На него влияют только виртуальный и AWE интерфейсы SQLOS.

----------------- | Buffer Pool | ----------------- | | V ----------------------- | Memory Clerk (VM/AWE) | ----------------------- | | V ----------------- | Memory Node | ----------------- Рис. 4

Все компоненты SQL Server оптимизированы для распределений по 8 КБ так, чтобы они могли распределять память через программу SQLOS для распределения одиночных страницы и, следовательно, через Buffer Pool. Однако, бывают случаи когда компоненту нужны большие буферы. Если это происходит, такое распределение будет обеспечено узлом памяти программы распределения нескольких страниц или виртуальной программой распределения. Как Вы могли догадаться, память будет распределена за пределами Buffer Pool. Именно поэтому автор не любит термин MemToLeave, SQL Server в действительности распределяет память и за пределами этой области!

[В начало]

Buffer Pool и механизмы AWE

Описание менеджера памяти SQLOS и Buffer Pool было бы неполным без рассказа о том, как во всём этом может использоваться AWE. Действительно важно понять, как Buffer Pool распределяет свою память, когда в SQL Server задействованы механизмы использования AWE. Для начала вспомним, что когда в AWE режиме происходит распределение VAS и страниц физической памяти, работа BP зависит от интерфейса Memory Clerk-а SQLOS. Во-вторых, нужно иметь в виду ещё несколько важных отличий. Вначале BP резервирует VAS кусками по 4 МБ, вместо того, что бы зарезервировать "цельный" большой кусок. Это предоставляет возможность SQL Server высвобождать VAS, когда процесс её утилизирует (высвобождение было бы не возможно без включения через параметры сервера механизмов использования AWE, и разделения на куски). После этого распределяется вся требующаяся память, с использованием AWE. Как раз в этом поведение SQL Server 2000 сильно отличается от поведения SQL Server 2005, т.к. для BP в SQL Server 2000 была бы распределена вся доступная механизмам AWE память.
Buffer Pool является для сервера основной программой распределения памяти и в AWE режиме он распределяет память с учётом механизмов AWE. Это означает, что все распределения через программу SQLOS для одиночных страницы, будут осуществляется из страниц, распределенных через AWE. Про это очень часто забывают, поэтому автор хочет повторить ещё раз: когда сервер работает в AWE режиме, большинство его распределений осуществляются через механизмы AWE. По этой причине, если SQL Server работает в этом режиме, Вы не увидите приватных байт и увеличения используемой памяти.
Так как страницы данных зависят от адресации, то есть её включают, Buffer Pool может отобразить их внутри или вне VAS. Другие компоненты могут вести себя аналогично, если они не основываются на распределении фактических адресов. К сожалению, кроме BP сейчас не существует других компонент, которые могут воспользоваться механизмами AWE.

[В начало]

О чём мы поговорим далее

Автор пока ещё не закончил описание того, как SQLOS управляет памятью. Поговорить можно ещё о многом. В следующих статьях будет рассмотрен механизм кэширования, применяемый в SQLOS, и то, как утилизируется память. Также важным аспектом для последующего изучения станет изучение возможностей получения посредством команд DBCC информации состояние памяти и сравнение этого подхода с аналогичными возможностями DMV.
Автор понимает, что этот материал не прост для восприятия, и просит направлять ему все возможные вопросы, которые у Вас могут возникнуть, и ответы на которые помогут читателям более глубоко и подробно освоить тему настоящей статьи.
Если у Вас есть какие - либо замечания, автор также готов их выслушать. Это для него действительно важно, так как может внести коррективы в его последующие статьи.

[В начало]

Can you resolve collation conflict?

Автор Алексей Лимонов

Обработка и хранение символьных данных на сервере MS SQL 2000 осуществляется при помощи схем сопоставления (collation). Схемы содержат шаблоны каждого символа, правила сортировки и сравнения. В предыдущих версиях сервера MS SQL необходимо было отдельно указывать кодовую страницу и порядок сортировки символьных данных, причем эти настройки действовали сразу на все объекты сервера. В MS SQL 2000 схемы сопоставления позволили более гибко подходить к работе с текстовыми данными. В данной статье рассматриваются основные принципы работы схем, а также их применение относительно российских условий.

Назначение collation

[В начало]

Символьные данные

В машинном представлении любой символ или знак представляет различные комбинации битов в состоянии 1 или 0. Соответственно использование одного байта для хранения символа дает возможность определить до 256 различных символов. Если увеличить объем данных до двух байт, то получим возможность распознавать 65 536 символов.
Кодовая страница есть ни что иное, как набор различных комбинации состояний битов (всего 256) в байтовой структуре. Эти комбинации определяют символы верхнего и нижнего регистров, цифры, специальные символы. При переносе данных между компьютерными системами с различными кодовыми страницами необходимо выполнить преобразование. Символы, битовая комбинация которых отсутствует в схеме назначения, в результате будут потеряны.
Для разрешения подобных ситуаций международная организация стандартов ISO и группа Unicode разработали стандарт Unicode. Для этого стандарта применяется двухбайтовая схема, которая содержит 65 536 символов и охватывает все символы основных языков. Если используется стандарт Unicode, то преобразования не происходит, благодаря чему ускоряется обработка и исключается потеря символьных данных.
Порядок сортировки определяет правила для сравнения и представления символов. Например, символ "а" больше, меньше или равен символу "б". Кроме того, порядок сортировки устанавливает правила сопоставления символов верхнего и нижнего регистров.

[В начало]

Описание схем сопоставления

Схемы сопоставления collation определяют способы хранения и обработки символьных данных сервера. Каждая схема устанавливает:

  • порядок сортировки для данных с кодировкой Unicode

  • порядок сортировки для данных с кодировкой не-Unicode

  • кодовую страницу для данных с кодировкой не-Unicode

Для MS SQL 2000 не надо указывать все три параметра, достаточно выбрать имя схемы и порядок сортировки.
На сервере реализованы две группы схем - Windows collations и SQL collations. Первая группа схем сопоставления реализована на сервере для поддержки региональных настроек Windows. Рекомендуется работать именно с этой группой. Вторая группа, SQL collations, используется для совместимости с предыдущими версиями сервера MS SQL. Ее выбор может быть обусловлен, если вы планируете обмениваться данными с серверами MS SQL 6.5 или MS SQL 7.0, либо приложение по работе с данными разработано с учетом схем сопоставления предыдущих версий сервера.
Схема сопоставления может быть различной на трех уровнях:

  1. Уровень сервера. Схема сопоставления выбирается при установке сервера. Выбранная схема будет использована по умолчанию для всех системных баз и пользовательских баз данных, а также всех объектов каждой базы. При необходимости изменить схему на уровне сервера используется утилита Rebuild Master.

  2. На уровне базы данных. Схему сопоставления можно указать при создании базы. Все объекты базы по умолчанию будут использовать эту схему. Также выбранная схема будет использоваться для символьных переменных и параметров. Изменить схему сопоставления базы данных можно при помощи команды ALTER DATABASE.

  3. На уровне поля таблицы. При создании таблицы можно указать собственную схему сопоставления.

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

[В начало]

Практическое применение

Как ни странно на схемы сопоставления, как и на триггеры, часто не обращают должного внимания. Точнее - о схемах вспоминают только во время возникновения ошибки "Cannot resolve collation conflict". Для решения возникающих проблем необходимо понимать причины их возникновения и пути их возможного решения.
Рассмотрим вариант работы на сервере Windows 2000, с региональными настройками Russian. При установке MS SQL 2000 программа предлагает установить схему collation Cyrillic_General_CI_AS. Первая часть схемы "Cyrillic_General" собственно определяет кодовую страницу. Далее идут правила сортировки, например, CI (case-insensitive) - нечувствительная к регистру, AS (accent-sensitive) - чувствительная к ударению. Можно получить полный список схем сопоставления с расшифровкой, выполнив запрос

select * from ::fn_helpcollations()

При выборе Cyrillic_General_CI_AS все системные базы данных, в том числе база TempDB, будут использовать именно эту схему сравнения. Как указано выше, все вновь создаваемые пользовательские базы и таблицы по умолчанию будут иметь точно такую же схему. Однако ничто не мешает при установке выбрать другую схему и так же с ней работать.
Когда вы работаете в рамках одной структуры collation, то проблем не возникает. Чаще всего они появляются, когда присоединяете или устанавливаете базу с другой схемой сопоставления. В большинстве случаев это схема SQL_Latin1_General_CP1251_CI_AS. Она представляет собой схему сопоставления вида SQL collations, доставшуюся в наследство от версии MS SQL 7.0. К примеру, указанная схема устанавливается, если вы выполняете обновление сервера или перенос базы данных с версии MS SQL 7.0 до MS SQL 2000. Здесь следует отметить, что хоть по смыслу схемы SQL_Latin1_General_CP1251_CI_AS и Cyrillic_General_CI_AS схожи, на самом деле для сервера это различные схемы сопоставления. И при их одновременном использовании сложно избежать ошибок.
Для примера рассмотрим ситуацию, когда сервер установлен с collation Cyrillic_General_CI_AS, есть база данных NEW_BASE с серверной схемой сопоставления Cyrillic_General_CI_AS, и база данных OLD_BASE для работы со старым приложением со схемой SQL_Latin1_General_CP1251_CI_AS. За базу NEW_BASE можно не беспокоиться - в рамках серверной схемы сопоставления все запросы будут корректно обрабатывать символьные данные. Другое дело, когда необходимы данные из OLD_BASE.
Ошибка "Cannot resolve collation conflict" будет появляться:

  • Если выполнять соединения JOIN или UNION с таблицами из базы с другой схемой сопоставления.

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

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

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

create table #t
(f1 int not null,
 f2 char(5) collate SQL_Latin1_General_CP1251_CI_AS,
 f3 varchar(150) collate SQL_Latin1_General_CP1251_CI_AS)

Далее, выполнить соединение между полями с различными схемами напрямую нельзя. Соответственно нельзя сделать JOIN или UNION для таблиц с различными схемами collation из одной или разных баз. Иначе опять получим сообщение об ошибке. В этом случае объединяемые поля также необходимо привести к одной схеме при помощи преобразования схемы сопоставлений. Допустим, соединение таблиц OLD_BASE и NEW_BASE можно выполнить так:

select * 
from NEW_BASE.dbo.Report as A 
   join OLD_BASE.dbo.Report as B 
     on A.char_key = B.char_key collate Cyrillic_General_CI_AS

а вот запрос на объединение:

select int_data, date_data, char_key
from NEW_BASE.dbo.Report
union all
select int_data, date_data, char_key collate Cyrillic_General_CI_AS
from OLD_BASE.dbo.Report

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

alter database OLD_BASE collate Cyrillic_General_CI_AS

Однако это еще не изменит схему для ваших символьных полей в базе. Менять их нужно либо вручную через Enterprise Manager, либо написать подобный запрос:

alter table Report alter column char_key char(5) collate Cyrillic_General_CI_AS

При этом имеется ряд ограничений - нельзя изменить схемы для вычисляемых полей, индексированных полей, полей с ограничением CHECK или внешних ключей. Необходимо вначале удалить их, а после изменения схемы сопоставления заново создать. Так что работа здесь может быть проделана большая и серьезная.
Если вы не в состоянии привести вашу новую базу к серверной схеме, и у вас нет возможности менять код в приобретенном приложении - то тогда надо менять серверную схему, и схему всех ваших баз данных. Опять-таки, если это не приведет к остановке работы других приложений и баз. Самый надежный и простой способ замены серверной схемы - переустановка всего сервера, что в принципе равносильно использованию утилиты Rebuild Master. После этого надо воссоздать структуры баз (но не данные в них!) уже с новой схемой collation, затем импортировать данные в обновленную структуру.
Если ваша прежняя база привязана к определенной схеме collation, а новая база также использует иную схему, то остается один способ - поставить новый сервер или установить именованный экземпляр (instance) SQL сервера. Правда еще не ясно, сколько уйдет ресурсов для реализации именованной установки сервера, поддерживает ли приобретенное приложение вообще такую конфигурацию. Вполне возможно, что проще будет установить отдельный сервер со своей схемой collation на отдельной машине.

[В начало]

Заключение

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

[В начало]

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

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


Хранение и поиск текстов в базах данных SQL Server 2000
Татьяна Крамарская
MSSQLServer: В предлагаемой статье кратко описаны особенности хранения и поиска текстовых данных в базах SQL Server 2000. Она адресована администраторам и разработчикам, которые планируют реализовать такой тип хранения...

Технология OLAP - мощная альтернатива электронным таблицам
Intersoft Lab
OLAP: Обеспечение финансовых специалистов всеми необходимыми программные средствами и информационными технологиями - залог успешного функционирования современного бизнеса. Вместе с тем, как показывают исследования, ситуация, сложившаяся в финансовых отделах многих компаний, далека от идеальной. Одна из причин - использование электронных таблиц. О проблемах этого подхода и современных инструментах подготовки отчетности - использовании технологий OLAP - пишет Шон Стольц в своей статье, фрагмент которой мы и предлагаем вашему вниманию...

Практика использования IBM Rational ClearQuest
Новичков Александр, Лапыгин Дмитрий
CASE: В статье рассматривается роль процесса Управления Изменениями в жизненном цикле разработки Программного Обеспечения. Расматриваются коммерческие аспекты и выгоды руководителей и менеджеров от четко поставленного процесса. Рассматривается инструмент поддержки процесса IBM Rational ClearQuest...

Оптимизация построения дерева из базы данных в .NET
Niels Holdijk
ADO: Некоторое время назад мне пришлось написать код, который создавал объектное дерево из DataView. В общем, не плохой задел на будущее, код работал и я, до поры до времени, не возвращался к нему...

Microsoft опять задерживает Visual Studio 2005 и SQL Server 2005
Поль Тюрро
MSSQLServer: Вчера Microsoft объявила о ценовой и лицензионной стратегии для Visual Studio 2005, в то время как собственно выход новой генерации программной платформы для разработчиков - в том числе сервера Microsoft SQL Server 2005 - откладывается до второй половины 2005 года. Ранее планировалось, что оба продукта появятся в середине 2005 года. Как заявляют в Microsoft, Visual Studio 2005 и SQL Server 2005 будут выпущены одновременно...

Если Windows XP обретет WinFS, превратится ли она в Longhorn?
Поль Тюрро
Аналитики взбудоражены слухами о том, что WinFS будет обратно портирована в XP, и беспокоятся, не приведет ли этот шаг к дальнейшему выхолащиванию Longhorn? Но это просто нелепо. В данном случае аналитики не принимают во внимание тот факт, что "три колонны Longhorn", как они были названы полтора года назад на конференции PDC 2003, включают такие технологии как Avalon и Indigo (и в некоторой степени WinFX). Все вместе взятое описывается просто как ориентированный на разработчика фундамент для следующего поколения операционных систем Microsoft. Конечные пользователи не работают с этими технологиями напрямую. Их перенос на Windows 2003 и XP просто означает, что разработчики смогут быстрее адаптироваться к новым технологиям, поскольку потенциальный размер рынка станет гораз...

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

Зачем нашей компании нужен СММI?
Новичков А.Н
CASE: Статья построена по принципу вопросов и ответов. В статье даются ответы на основные вопросы, связанные с моделью СММI: зачем и кому нужна сертификация, какие инструментальные средства и методологии необбходимы для достижения СММI. Данная статья будет постоянно дополняться новыми вопросами и ответами. Следите за анонсами...

Технологическая зрелость IT-организаций
Ю.А. Назаренко
CASE: Модель технологической зрелости (СММ) - это описание стадий эволюции, которые проходят организации-разработчики по мере того, как они определяют, реализуют, измеряют, контролируют и совершенствуют процессы создания ПО. Эта модель помогает организации выбрать адекватную стратегию усовершенствования этих процессов, предоставляя методическую основу для определения текущего уровня их совершенства и выявления проблем, критичных для качества разрабатываемого ПО...

Репликация столбцов Identity в SQL Server - Настройка репликации
Muthusamy Anantha Kumar
MSSQLServer: Репликация транзакций может использоваться для обеспечения высоких требований к доступности системы, например, если Вы хотите, чтобы приложения обращались к серверу-подписчику, когда нет связи с первичным сервером-издателем баз данных. В этом случае, одним из препятствий для администраторов базы данных SQL Server при конфигурировании репликации являются таблицы со столбцами identity...

Критика уровней изолированности в стандарте ANSI SQL
Беренсон, Бернштейн, Грэй, Мелтон, О'Нил
SQL: В ANSI SQL-92 [MS, ANSI] Уровни Изолированности (Isolation Levels) определяются в терминах феноменов (phenomena): Грязное Чтение (Dirty Read), Неповторимое Чтение (Non-repeatable Read) и Фантом (Phantom). В статье показывается недостаточность феноменов и определений ANSI SQL для полного корректного описания некоторых популярных уровней изолированности, включая стандартные блокировочные реализации рассматриваемых уровней. Исследуется неоднозначность определений феноменов и дается более точное формальное определение феномена. Приводятся новые феномены, которые лучше характеризуют типы изолированности. Определяется новый тип многоверсионной изолированности называемый Изолированностью Образа (Snapshot Isolation)....

Стандарты языка реляционных баз данных SQL: краткий обзор
С.Д.Кузнецов
SQL: В статье содержатся некоторые рекомендации, направленные на то, чтобы облегчить создание мобильных прикладных информационных систем, опирающихся на использование реляционных систем управления базами данных (СУБД), которые поддерживают международный стандарт языка баз данных (БД) SQL. Чтобы лучше прояснить смысл статьи, необходимо сделать несколько предварительных замечаний...

Дубликаты, неопределенные значения, первичные и возможные ключи и другие экзотические прелести языка SQL
Сергей Кузнецов
SQL: Наверное, многим знатокам языка SQL содержимое этой заметки покажется тривиальным. Особенно тем, кто читает колонку Криса Дейта в журнале "Database Programming and Design" (www.dbpd.com). Поверьте, что я не конкурирую с уважаемым господином (и моим любимым автором) Дейтом, а лишь хочу высказать свои собственные соображения, возникшие в ходе подготовки практического курса по языку SQL. Я занимаюсь вопросами, связанными с организацией доступа к базам данных, уже более 20 лет, и поэтому мне самому было странно обнаружить в языке SQL некоторые неафишируемые, но глубоко присущие ему свойства, отстраняющие язык от классической реляционной теории...

Три полезных способа блокировки
Keith McLeod
SQL: Когда два и более процессов должны последовательно работать с одними и теми же данными, например, два следующих одно за другим в одной программе SQL-предложения, таких как SELECT и UPDATE, то защита данных срабатывает в двух случаях: другие программы INSERT-ируют дополнительные данные или производят другие изменения, влияющие только на успешное выполнение предложений/процессов, а также при повторном запуске вашей же собственной программы. (Только, пожалуйста, не говорите мне, что этого не может быть.) Последнее - это подслучай разработчика, который надо понимать как особый случай. В каждом разе обоими процессами используется одна и та же блокировка, однако Reports Queries в палитре свойств не поддерживает атрибут FOR UPDATE...

Деревья в SQL. Часть 1
Joe Celko
SQL: Дерево - специальный вид направленного графа. Графы - структуры данных, состоящие из узлов связанных дугами. Кажая дуга показывает однонаправленную связь между двумя узлами. В организационной диаграмме, узлы - сотрудники, а каждая дуга описывает подчинения. В перечне материалов, узлы - модули (в конечном счете, показываемые до индивидуальных частей), и дуги описывают отношение "сделан из"....

Методы оптимизации запросов в реляционных системах
С. Чаудхари
SQL: С начала 70-х была выполнена значительная работа в области оптимизации запросов. В короткой статье трудно охватить всю эту большую работу вширь и вглубь. Поэтому я решил сосредоточиться прежде всего на оптимизации SQL-запросов в реляционных системах баз данных и представить свое пристрастное и неполное видение этой области. Целью данной статьи не является представление исчерпывающего обзора, а скорее объяснение основ и демонстрация образцов значительных работ в этой области. Я хотел бы принести извинения многим людям, внесшим свой вклад в оптимизацию запросов, которых явно не упоминаю по своему недосмотру или из-за недостатка места. В обзоре для простоты изложения опущены технические детали...

[В начало]

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

Data Sharing in a Heterogeneous Database Environment
Glenn VanBenschoten
Studies show that data volumes are doubling every 6-18 months. Some analysts acknowledge, however, that as those volumes grow, the pace of information consumption accelerates - the moment when changed data must be useful and usable for the business. These converging forces put IT data integration in the cross hairs

SSIS: Datetime variables don't always do what you expect
Jamie Thomson's Blog
I recently came across some slightly strange behaviour on one of my SSIS packages and I thought it was worth posting up here to make people aware of it

Can I implement an input mask in SQL Server?
aspfaq
Access has a formatting feature that allows you to mask data (e.g. using ********) when users open a table in the Access GUI, instead of showing the sensitive data that's really stored in the table (be it a password, credit card number, social security number, etc)

SSIS: Evaluating variables as expressions
Jamie Thomson's Blog
I have aluded as to the use of SSIS property expressions quite a few times on this blog. Regular readers will know what I think of them by now - they're a great mechanism for dynamically modifying the behaviour of your SSIS package at runtime. In short, property expressions ROCK!

Analysis Services 2005 Editions differentiation
Mosha Pasumansky
SQL Marketing published the table with differentiation between different editions of SQL Server 2005 - http://www.microsoft.com/sql/2005/productinfo/sql2005features.asp. However, since SQL Server is such a big product, not every single technical detail made into it, and I lately got several questions about some details of feature differentiation in Analysis Services. First, obviously, everything that was available in Standard Edition of Analysis Services 2000 is still available in Standard Edition of Analysis Services 2005. Unfortunatelly, there was a typo error in the published table which incorrectly put Custom Rollups into Enterprise Edition only. This is really just a mistake that somehow got there. We don't take away features. It is actually vice versa - as Tom Rizzo wrote about in his blog - we have really added value to the product by shifting several features which were previously available only in Enterprise Edition to the Standard Edition. In case of Analysis Services, you will immediattely see, that cell calculations, that were only part of Enterprise Edition in AS2K, now are available in all editions. New MDX Script constructs such as SCOPE, assignments, FREEZE etc - which are even more powerful then old style CREATE CELL CALCULATION statements are also available in Standard edition. Another example is HTTP connectivity feature. Recognizing how important scenarios of extranets and Internet access to the data not only for big enterprises but also for smaller companies is, we decided to make HTTP connectivity a feature of Standard edition as well. And there is more. The bottom line is Standard Edition of AS2005 is a better product then Standard Edition of AS2K, not just because it is new version, but also because it will have more staff.

SQLOS Caching
Slava Oks's WebLog
What makes Yukon memory management different from SQL2000 is elaborative caching framework. In SQL2000 there are two major caches: data page cache, called Buffer Pool and procedure cache, cache of query plans. Buffer Pool and procedure cache are very tightly coupled. For example procedure cache relies on buffer pool's eviction mechanism to control its size, even though both have separate costing policies. Having BP and procedure cache tied together significantly simplified caching machinery in SQL2000 when we had to deal with hard to solve problems

Be Aware: IA64 Stack Size
Slava Oks's WebLog
Stack subject in Windows OS is fascinating. There are so many interesting technical problems surrounding it. The moment you think you fully understand everything about stack you suddenly discover yet another mystery. And so it goes

WAITFOR (RECEIVE ...) does not poll!
Rushi Desai
A lot of people have been concerned about using the WAITFOR (RECEIVE ...) statement for receiving Service Broker messages from a queue. Several believe that this would poll the queue continuously until messages become available in the queue either by another transaction enqueueing messages or a lock that was previous held being released. The polling wary have asked for an alternative notification based mechanism to fix this. For all you guys.. relax! WAITFOR (RECEIVE ...) does not poll. It does not consume any processor cycles on the server side or the client side (assuming that ADO.NET indeed uses IO completion ports). The only thing you are possible using up is a thread that blocks until a result set is available. If you do not want to sacrifice your thread, go ahead and use BeginExecuteReader while posting your WAITFOR(RECEIVE ...) statement from ADO.NET

Invalidating cached result sets using SQL Server Query Notification
Rushi Desai
Anyone who has written a web application has probably experienced the cost of doing a database round trip for fetching a result set everytime a web user loads a page. In fact, handling a page request may involve more than one queries (imagine 20 drop-down boxes, each of which must be populated). A fix to this problem is caching frequently requested result sets in memory to avoid the database round trip. The cache can be invalidated periodically get a more recent version of the actual data. This technique seems to work fine if the data is not updated frequently and the application does not really need the result sets to be fresh. What would be ideal in this case is for the database to notify the cache when it gets dirty so that the application can fetch the updated result set on demand. Most database engines have the infrastructure for making this possible and it is used for maintaining materialized views. SQL Server 2005 provides a mechansim to hook into this plumbing in order to allow external applications to be notified when views are invalidated. The feature is called Query Notification

MSDN Webcast Q&A: Index Defrag Best Practices - Fragmentation Questions
Kimberly L. Tripp
Q: Can I automate DBCC DBREINDEX to rebuild all tables on all databases on a server? Actually, yes and no… With stored procedures you’ll have a hard time changing database context without having to use dynamic string execution…. And so this can add a bit of frustration. BUT – it’s your lucky day (and really, it’s mainly because I’m on a ferry going to Victoria Canada right now and the Washington State Ferry system doesn’t currently have wireless internet access… and well, I have a few spare minutes :)

Ado.net 2.0 Mars Session Pooling. (aka stuff you don't need to know.)
Angel Saenz-Badillos
Well, it has been a long time since my last blog and I am finding it very hard to get this one started. You start thinking that you need to have something really good to start up the train again or you might as well not bother. I am afraid that session pooling does not fall under the “really good” category. It is transparent to users and nothing bad happens if session pooling does not work. I could argue that it is important to know how this feature works so as to maximize MARS performance scenarios (this is true) but as I mentioned in a previous blog I am NOT a big fan of using MARS for performance, it is possible but too painful for the gains you will find IMO

MSSQL Server Reporting Services: Black Belt Administration: "Governor" Capabilities: Report Execution Timeout
William Pearson
In working with many reporting tools over my career, particularly within enterprise business intelligence suites and high-end production reporting systems, I have become acquainted with various control features in each that allow administrators to govern the actions of end users. Reporting Services is no different in this aspect of need for control, and the application provides numerous avenues for restraining our users from kicking off resource crippling queries that, unchecked, could disrupt even the most robust systems, as well as to prevent other harmful activities. At various junctures within this series, we will examine ways to effect such controls on an intermittent basis

SQL Profiler Tips and Tricks
Mike Gunderloy
If you're a developer who works with SQL Server, you probably already know about SQL Profiler, the graphical tool that lets you capture and analyzer SQL Server events in real time. If you're not familiar with this tool, check out my previous article, "Introduction to SQL Profiler". This time around, I'm going to drill a bit deeper into this useful tool, offering you ten more bits of SQL Profiler that you might not have noticed already

Migration to Production
Grant Fritchey
In order to maintain a stable, protected, production system, my company has built a multi-tier Development, Quality Assurance (QA), Staging & Production environment. A number of processes have been defined around how to move data & structures out of development and into production. We’ve also established a set of tools that we use for maintaining these processes. During the building of these systems and the development of these processes, a number of problems have come up that we’ve had to work around. Hopefully, by communicating our processes and the problems these processes address, you can learn from our pain

SQL Server 2000 Security - Part 6 - Ownership and Object Permissions
Marcin Policht
We have described, so far, authorization based on a predefined fixed server (determining a set of SQL server-wide privileges) and database (applying to database objects and activities) roles. We have also discussed application roles, which makes the level of permissions independent of those assigned to a SQL Server login or a database user account. Now it is time to look into permissions from the point of view of database objects. There are two main factors that play a role in determining how access rights to them are evaluated - their ownership and custom permissions. We will discuss the first one of these topics in this article and will continue with the other one in the next installment of this series

Visual Studio and SQL Server delayed again
Martin LaMonica
Microsoft has pushed back the release dates of both software packages to the second half of 2005

Counting Rules and ItemSets
DMTeam
This tip demonstrates how to determine the number of rules and itemsets found in an Association Rules model

Visual Studio 2005 Pricing and Delays
Paul Ballard
Microsoft has released the pricing for the various editions of Visual Studio 2005 including pricing for those with MSDN subscriptions. This news comes on the heels of other announcements that Visual Studio 2005 (and therefore SQL Server 2005) will be further delayed to the end of the year

Using SQL against the Unified Dimension Model in Microsoft SQL Server 2005 Analysis Services
Mat Stephen's WebLog
Following Deepak's question, asked in his comment on my previous UDM post, I quizzed our internal Yukon alias and received the following useful info regarding using SQL against a UDM; thanks to Akshai Mirchandani

SQL Server 2005 - Management Studio Scripting Option and SQLCMD (loving it!)
Kimberly L. Tripp
One of my favorite features of Management Studio is the ability to “script” a step rather than execute it. Within SQL Management Studio, each dialog has 4 different options from which to choose (these are including the typical OK/Cancel) but also add a couple more at the top of the dialog

SQL Server 2005 - Profiler with Performance Monitor Integration and a bit more with Management Studio
Kimberly L. Tripp
I began setting up for Profiler and Performance Monitor by first launching Profiler and then launching Performance Monitor within it (there's an icon for PerfMon second from the Right or you can select Performance Monitor from the Tools Menu). I had already created a Performance Monitor Counter Log so all I needed to do was start it (more details on PerfMon Counter Logs later)

An Identity Crisis
Troy Ketsdever
Recently, I did some troubleshooting and cleanup with a company on their mission-critical backend database server. One of the main processing tables was defined with an IDENTITY column, which had overflowed the upper boundary of the integer datatype within about 8 months of its implementation. Clearly, the table is central to a lot of processing! The column was only used as an organizing ID (no FK's, etc.) which, thankfully, made cleanup easier. I won't go into the details of the cleanup operation other than to say that the column datatype is now a bigint, and the table should now have no problems for the next 6 to 9 Billion years

Use DataSets as Business Objects
Enrico Sabbadin
Take advantage of OOP and runtime metadata-based techniques to enable DataSets to perform validations

Microsoft delays tool, database updates
Martin LaMonica
Microsoft said new versions of its Visual Studio development tools and SQL Server database, expected this summer, have been delayed until later this year

Selecting a SQL Server recovery model
Greg Robidoux
SQL Server 2000 offers three recovery models for each database: Full Recovery, Simple Recovery and Bulk-Logged Recovery. The recovery models determine how much data loss is acceptable in case of a failure and what types of backup and restore functions are allowed

An efficient query for joins of four tables
Jeremy Kadlec
Due to nature of the existing SQL Server 2000 database in my company, I have to use around four or more tables in my query to get the required results. Consider two tables for now: contracts and dealers. I have to join these two tables in mostly all reports. Indexes have been defined on fields dealer_no (String) and tpa_code (String), which are used in INNER JOIN. Tpa_code has fewer distinct values, and for me its value is same in all reports, say 'UWC'

Get your indexes in shape
Barrie Sosinsky
Just like any other large, very active file, index files are likely to become fragmented over time. (They are also more likely to be corrupted, but that is another tip.) Because your database's performance is often (but not always) dependent upon the state of your indices, it is worthwhile to defragment them on a regular basis. Any workload that performs significant disk I/O will benefit the most from defragmentation, as is the case in systems that provide decision support. Transactional systems, as a rule, don't benefit as much from an index defrag. You will also find improvement in your updating statistics if you use the DBCC DBREINDEX command

Free Microsoft patch tool morphs, nears completion
Margie Semilof
Microsoft's long-awaited free patch management tool, Windows Update Services, continues to make progress on its way to a mid-year release. On Tuesday, Microsoft said the tool, which was also given a new name, is now available as a release candidate

Rant: Reporting Services and Analysis Services
Chris Webb's BI Blog
I'm just finishing off my presentation for PASS, in the course of which I've come up with a whole bunch of topics to blog about in the future, but now I've got some more spare time I've started to look at Reporting Services 2005 in more detail. Unfortunately this has also reminded me of something that has irritated me for a long time and which I need to get off my chest...

SSIS: Comparing SSIS & Informatica
Jamie Thomson's Blog
In my dim and distant past I was fortunate enough to have some exposure to a product called Informatica. Informatica is the market leading enterprise Extract, Transform & Load (ETL) product and will therefore be a direct competitor to SQL Server Integration Services (SSIS) when it is released later this year

Visual Studio 2005 Ship Date Slips Again
Darryl K. Taft
Microsoft Corp. Monday announced that the much-anticipated next version of its developer tools suite will ship in the second half of 2005 in several versions, with the Microsoft Developer Network as its primary delivery mechanism

Backwards Breaking Changes from version 1.1 to 2.0
gotdotnet.com
This page lists breaking changes for the version specified in the above title. For details on how a breaking change is classified, see the Breaking Change Page. To see a description of all of the fields used in this list, see the Details Page

Commentary on the March 14th Forrester Report
Kevin Kline
Lisa Vaas of eWeek recently reported on a Forrester Report, writing by Noel Yuhanna (http://www.eweek.com/article2/0,1759,1776014,00.asp), that describes a number of customers who are not at ease with the current condition of the Yukon beta. Yuhanna describes two key concerns – performance benchmarking and high-end scalability benefits – which are the heart of the article which I would like to comment on

So much to blog about, so little time :(
Kimberly L. Tripp
Wow, seems like forever since I last blogged... and yes, it was! Many exciting things have happened over the last few weeks and that's part of the reason for my silence... Thought I'd do a quick list of highlights and hopefully I'll expand on a few of these things over the next few days

The SQL Goddess Blogs
Clemens Vasters
You read it here first. Kimberly Tripp blogs (rss). If you do anything with SQL Server: Subscribe!

When did SQL Server stop putting indexes on Foreign Key columns?
Kimberly L. Tripp
The title is a common question I've received in the past and I thought I'd take a few minutes to explain a bit about keys and indexes...

I received an error message that SQL Server had marked my database suspect. What can I do?
Brian Moran, Karen Watterson
Use emergency mode (also called bypass mode) to recover data when SQL Server marks a database suspect. Occasionally something (hardware glitches, software glitches, gamma rays, or whatever) causes SQL Server's ordinarily robust automatic recovery to fail. Of course, recovery failure is never a problem because everyone always has an accurate, up-to-date backup handy. Uh- huh. Right. But what if (hypothetically) you don't have a good backup?

Automating DTS Execution
Augustin Carnu
We use extensively DTS technology to move and transform data in our BI Application; we had to find an acceptable solution to re-link the packages on Production server after moving them from the development and QA environments. This article presents a solution to the time consuming job of manually linking 50+ DTS packages after importing them on a new SQL box

Customizing SQL Server Reporting Services with .NET Code
Dan Clark
Design and customize reports with Visual Studio .NET integrated Report Designer. With the release of Reporting Services, Microsoft has provided a truly enterprise-level reporting solution. Reporting Services provides support for the entire reporting life cycle including report authoring, report management, and report delivery

What naming convention should I use in my database?
aspfaq
Unless you work with Celko, there really isn't a right or wrong way to name your database objects. Some ways are better than others, of course. There are three important questions to consider

Building database application with ADO.NET for beginner
Yulianto AKA goodmast3r
An article on building database with ADO.NET application for beginner

Service Broker's new poison message handling
Bob Beauchemin's Blog
In this last entry on Service Broker enhancements I inadvertantly referred to the new poison message handling as poison conversation handling. Well, maybe it wasn't so inadvertant. So what's the difference between Service Broker's poison message handling and traditional poison message handling?

New Service Broker features in the Feb CTP
Bob Beauchemin's Blog
I've been doing some experimenting with the new SQL Server Service Broker features in Feb CTP. You can read about them in the CTPNotes.doc file; I won't repeat the information here

Handling missing members
Chris Webb's BI Blog
This is something of an FAQ on the newsgroups, but since someone asked me about it again recently I thought I'd write up the answer up for posterity: in an MDX query, how do you deal with the problem of a query breaking because members which were once present in a cube are no longer present? For example, you have a query that references the member [Time].[2002].[Q1].[M1] but in a freak dimension-processing accident you suddenly find that this member no longer exists in your cube. In this scenario, trying to run your query will raise an error

How to run SQL Profiler without sysadmin rights
pshro...@gmail.com
I thought I'd share what I do to enable people to run SQL Profiler traces without having to give them sysadmin rights. I wrote a batch file that calls Profiler from the command line as follows

Q & A: what to do with third party tables in master db
Engine Watch
Q: Niles@discussions.microsoft.com wrote in message news:48E0BCCD-78CA-4C4D-8F32-26D4D62857A2@microsoft.com A couple of vendor installations of systems installed additional tables within the master database. Some of these tables exist in the vendor's database and in master. I'd like to get rid of them from master but 2 things concern me

[В начало]

ФОРУМ SQL.RU

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

ХП против View
Прошу помочь с оптимизацией
HELP!!! Удалил юзера dbo из базы!
Защита базы от системного администратора
Больше книг хороших и разных!
Пермиссии для доменного аккаунта, под которым стартует SQL Server Agent
Как улучшить очень медленный запрос?
Импорт данных из MS Excel
Мое сообщение при ОШИБКЕ ограничения
прошу обсудить шаблон для вложенных хп
VSS + MSSQL (принципы работы)
MSAccess и MSSQL через интернет - миф или реальность?
Помогите, не видно таблиц в ЕМ!
И снова round
Как влияет количество коннектов к серверу?
Переопределение переменных
Администраторы баз данных, защищайте свои сервера!
как создать таблицу вне текущей транзакции?
Помогите избавится от дедлоков/посоветуйте по оптимизации
OPENROWSET - ?

[В начало]

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

Enforce Distributed transaction
Подскажите в вопросе про уведомления
ОПРОС: Вопросы по установке SQL Server 2005
Доступк SQL Server'у из интернета
САЙЗИНГ для железа под SQL Server от HP
How to log long-running queries (ODBC)
MSSQLelBooks
Пропадает доступ к SQL Serveru. Need help!
Microsoft SQL WEB Administrator
Insert не работает для прилинкованой в Access Вьюхи

[В начало]


Вопросы, предложения, коментарии, замечания, критику и т.п. оставляйте Виталию Степаненко и Александру Гладченко в форуме: Обсуждение рассылки

СЕМИНАРЫ  КОНФЕРЕНЦИИ

МИНИФОРМА
ПОДПИСКИ



ПУБЛИКАЦИИ  АРХИВ


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.winsoft.sqlhelpyouself
Отписаться

В избранное