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

СОДЕРЖАНИЕ

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

СОВЕТЫ

Блокировки SQL Server 7.0/2000 - теория и практика устранения проблем (окончание)

По материалам статьи KB224453 Understanding and Resolving SQL Server 7.0 or 2000 Blocking Problems
Перевод Ирины Наумовой

Введение
Сбор информации о блокировках
Получение информации с помощью профайлера (SQL Server Profiler)
Типовые сценарии нахождения и разрешения блокировок
Анализ данных, полученных с помощью профайлера

Основные категории сценариев устранения блокировок

В приведенной ниже таблице указаны основные причины блокировок и возможности их разрешения. Число в столбце "Сценарий" соответствует номеру в разделе "Типовые сценарии нахождения и разрешения блокировок" данной статьи. Столбцы Waittype, Open_Tran и Status берутся из таблицы sysprocesses. Столбец "Разрешается?" показывает, разрешается ли проблема блокирования.

Сценарий

Waittype

Open_Tran

Status

Разрешается?

Другие признаки

1

Не ноль

>= 0

runnable

Да, когда закончится выполнение запроса.

Значение в колонках Physical_IO, CPU и/или Memusage будет постепенно увеличиваться. Duration будет иметь максимальное значение когда выполнение запроса закончится.

2

0x0000

>0

sleeping

Нет, потому что подключение SPID может быть разорвано.

В трассе для этого SPID можно увидеть сигнал внимания, показывающий что время выполнения запроса исчерпано или выполнение прервано.

3

0x0000

>= 0

runnable

Нет. Не будет разрешена пока клиенту не будут отправлены все строки или пока соединение не будет разорвано. Подключение SPID может быть разорвано, но на это может уйти до 30 секунд.

Это часто происходит когда open_tran=0 и SPID удерживает блокировку в то время как установлен уровень изоляции транзакций по умолчанию (READ COMMMITTED)

4

Изменяется

>= 0

runnable

Нет. Не будет решена пока клиент не закончит выполнение запроса или пока не закроет соединение. Подключение SPID может быть разорвано, но это может занять до 30 секунд.

Значение колонки hostname в sysprocesses для SPID во главе цепочки блокирования будет такое же, как и для одного из SPID, которых он блокирует.

5

0x0000

>0

rollback

Да

В трассе профайлера можно увидеть сигнал внимания для этого SPID, показывающий что время выполнения запроса истекло, выполнение прервано или запущена операция отката.

6

0x0000

>0

sleeping

Когда Windows NT обнаруживает что сессия долгое время неактивна, соединение с SQL Server разрывается.

Значение поля last_batch из sysprocesses намного меньше текущего времени.

[В начало]

Применение сценариев разрешения блокировок

В сценариях представленных ниже, содержатся характеристики, которые приведены в таблице выше. Этот раздел содержит дополнительную информацию, а также пути решения проблем блокирования.

1. Причиной блокирования является запрос, выполняющийся продолжительное время.

    Решение:
    Решением проблемы блокирования этого типа является оптимизация запроса. Фактически, этот класс проблем блокирования относится к проблемам на стадии исполнения Для получения информации о решении проблем долго выполняющихся запросов, смотрите следующую статью из базы знаний Microsoft:
    243589 INF: Troubleshooting Slow-Running Queries on SQL Server 7.0
    Для более подробного изучения проблемам на стадии исполнения смотрите статью базы знаний Microsoft:
    224587 HOW TO: Troubleshoot Application Performance with SQL Server
    Если у Вас имеется долго выполняющийся запрос, который блокирует других пользователей и не может быть оптимизирован, рассмотрите его перемещение из OLTP среды в систему принятия решений.

2. Блокирование по причине того, что SPID, находящийся в состоянии "Sleeping", потерял возможность трассировки уровня вложенности транзакции.

    Этот тип блокирования часто идентифицируется тем, что SPID находится в состоянии "sleeping" или "awaiting command", и у него уровень вложенности транзакций (@@TRANCOUNT, поле open_tran из sysprocesses) больше нуля. Причиной может служить превышение времени выполнения запроса или отмена выполнения без указания операторов ROLLBACK или COMMIT. В этом случае SPID прекращает выполнение текущего запроса и пакета, но автоматически не откатывает / не завершает транзакцию. Это должно быть предусмотрено в приложении, т.к. SQL Server не предполагает что нужно откатывать всю транзакцию из-за отдельного запроса. Превышение времени выполнения или окончание запроса проявляются в виде события ATTENTION для данного SPID в трассе профайлера.
    Продемонстрировать это можно следующим запросом:

    
    BEGIN TRAN 
    SELECT * FROM SYSOBJECTS S1, SYSOBJECTS S2
    
    -- Запустите это после выполнения запроса
    SELECT @@TRANCOUNT
    ROLLBACK TRAN

    Во время исполнения запроса, прервите его работу. После того, как выполнение запроса прекратится, переменная @@TRANCOUNT покажет, что уровень вложения транзакций =1. Если бы запрос был на удаление или изменение данных, или в операторе SELECT с использованием опции HOLDLOCK, сохранились бы все блокировки, установленные этими операторами. Даже в представленном выше примере, если другой запрос в транзакции установил блокировку раньше, чем начал выполняться SELECT, она бы не устранились и после того как выполнится оператор SELECT.

    Решение:

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

      1. При обработке ошибок в клиентском приложении делать проверку условия: IF @@TRANCOUNT > 0 ROLLBACK TRAN после любой ошибки, даже если в приложении нет открытых транзакций. Это требуется для того, чтобы предотвратить следующую ситуацию, когда хранимая процедура, выполняющаяся в пакете, открыла транзакцию, но приложению о ней ничего неизвестно. Обратите внимание, что при некоторых условиях, таких как, например прерывание выполнения запроса, прерывается выполнение именно текущего запроса, и таким образом даже если в процедуре есть проверка условия IF @@ERROR <> 0 ROLLBACK TRAN, этот код не будет выполнен.
      2. Используйте установку SET XACT_ABORT ON при подключении к серверу или в любой процедуре, где определяются транзакции, которые не откатываются после возникновения ошибки. В случае возникновения ошибки превышения времени выполнения транзакции, эта установка прервет открытые транзакции и вернет управление клиенту. Обратите внимание, что инструкции T-SQL идущие после инструкции, которая вызвала ошибку, не будут выполнены.
      3. Если используется пул подключений в приложении, которое открывает подключение и выполняет небольшое количество запросов перед передачей подключения назад к пулу, таких как Web-приложения, временное отключение пула подключений может помочь решить проблему, пока не будет предусмотрена обработка ошибок в приложении-клиенте. Отключение пула подключений разорвет соединение с SQL Server, приводя к тому, что сервер откатит все открытые транзакции.
      4. Если допускается использование пула подключений и используется SQL Server 2000, необходимо установить MDAC 2.6 или выше. Эта версия MDAC добавляет код к ODBC драйверу и OLE DB провайдеру, чтобы подключение было "сброшено" прежде, чем оно будет снова использовано Вызов sp_reset_connection прервет любую инициированную сервером транзакцию (не затрагивая транзакции DTC, инициированные клиентским приложением), установку базы данных по умолчанию, опции SET и т.д. Обратите внимание, что подключение не сбрасывается до тех пор, пока оно не будет заново востребовано из пула. Таким образом, возможен случай, когда пользователь открыл транзакцию и затем создал подключение в пуле, но оно может не использоваться в течение некоторого времени, в то время как транзакция все еще открыта. Если подключение не используется и происходит превышение лимита времени, оно удаляется из пула подключений. Таким образом, оптимально для клиентского приложения: в обработчике ошибок прервать выполнение транзакции или использовать SET XACT_ABORT ON чтобы избежать потенциальной задержки.

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

      Для получения информации о проблемах, вызванных тяжёлыми запросами, изучите следующую статью в базе знаний Microsoft.
      243589 INF: Troubleshooting Slow-Running Queries on SQL Server 7.0
      Для полного представления об исследовании проблем производительности приложений, прочитайте следующую статью:
      224587 HOW TO: Troubleshoot Application Performance with SQL Server
      Если у Вас имеется выполняющийся долго запрос, который блокирует других пользователей и не может быть оптимизирован, рассмотрите его перемещение из OLTP системы в систему принятия решений.

3. Блокирование по причине того, что SPID не вернул все строки результата клиенту.

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

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

4. Блокирование вследствие возникновения распределенной клиент-серверной тупиковой блокировки.

    В отличие от обычной тупиковой блокировки распределенная тупиковая блокировка не обнаруживается с помощью менеджера блокировок RDBMS. Это происходит вследствие того, что только один из ресурсов, вовлеченных в тупиковую блокировку - это блокировка SQL Server. С другой стороны, тупиковая блокировка зарождается на уровне клиентского приложения, которым SQL Server не может управлять. Следующий пример показывает, как такое может произойти и как решается эта проблема:

    1. Клиент / серверная распределенная тупиковая блокировка с одним клиентским потоком.

      Если на клиенте имеется несколько открытых подключений, выполняемых в одном потоке, может возникнуть следующая распределенная тупиковая блокировка. Для краткости, на представленной ниже схеме, термин "dbproc" относится к структуре подключения клиента.

      
       SPID1------blocked on lock------->SPID2
        /\                         (waiting to write results
        |                           back to client)
        |                                 |
        |                                 |                      Server side
        | ================================|==================================
        |     <-- single thread -->       |                      Client side
        |                                 \/
       dbproc1   <-------------------   dbproc2
       (waiting to fetch             (effectively blocked on dbproc1, awaiting
        next row)                     single thread of execution to run)

      На рисунке показан случай, когда один поток клиентского приложения имеет два открытых соединения. И в нем dbproc1 выполняет SQL запрос. Затем приложение выполняет другую SQL инструкцию в рамках dbproc2 и ожидает результаты, чтобы начать дальнейшую их обработку. Когда сервер начинает возвращать клиенту результаты (предполагается что данные сначала возвращаются dbproc1), dbproc для завершения должен обработать все полученные им данные. Он получает свои данные до тех пор, пока SPID2 не заблокирует SPID1 (потому что два запроса на сервере выполняются асинхронно). В этом случае dbproc1 будет неопределенно долгое время ожидать следующих данных. SPID2 не блокируется никаким другим SPID, он пытается передать результат своему клиенту - dbproc2, однако dbroc1 блокирует dbproc2, поскольку на уровне приложения они выполняются в одном потоке. Эту тупиковую блокировку SQL Server не может определить и разрешить, поскольку только один из вовлечённых ресурсов принадлежит SQL Server.

    2. Клиент / серверная распределенная блокировка с одним потоком на каждое соединение.

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

      
      SPID1------blocked on lock-------->SPID2
        /\                         (waiting on net write)        Server side
        |                                 |
        |                                 |
        | INSERT                          |SELECT
        | ================================|==================================
        |     <-- thread per dbproc -->   |                      Client side
        |                                 \/
       dbproc1   <-----data row-------   dbproc2
       (waiting on                     (blocked on dbproc1, waiting for it
        insert)                         to read the row from its buffer)

      Этот случай похож на Пример "a" за исключением того, что dbproc2 и SPID2 выполняют инструкцию SELECT с намерением выполнить одновременно обработку строки и отсылку каждой строки через буфер к dbproc1 для вставки, модификации или удаления её из той же самой таблицы. В конечном счете, SPID1 (выполняющий вставку, удаление или модификацию) блокируется SPID2 (выполняющим инструкцию Select). SPID2 отсылает строку результата клиенту dbproc2. Dbproc2 пробует передавать строку в буфер к dbproc1, но видит, что dbproc1 занят (SPID 2 блокирует SPID1). В данном примере dbproc2 блокирован на прикладном уровне dbproc1, у которого SPID (SPID1) блокирован на уровне базы данных SPID2. Снова, это приводит к тупиковой блокировке, которую SQL Server не может обнаружить или разрешить, потому что только один из вовлеченных ресурсов относится к SQL Server.
      Примеры "a" и "b" - это основные причины подобного рода блокировок, о которых разработчики приложений должны помнить и писать приложения учитывая такие случаи.

    Решение:

    Два эффективных решения состоят в том, чтобы использовать превышение времени выполнения запроса или объединение подключений.

    1. Превышение времени выполнения запроса
      Когда происходит превышение времени выполнения запроса, в случае тупиковой распределенной блокировки она будет снята. Для получения более подробной информации об использовании превышения времени выполнения запроса, см. документацию по DB-Library или ODBC.

    2. Объединение подключений
      Эта особенность позволяет клиенту, имеющему множественные подключения связывать их в единое операционное пространство, так что подключения не блокируют друг друга. Для подробной информации, см. статью "Using Bound Connections" (Использование объединений подключений) в справочной системе SQL 7.0.

5. Блокирование по причине того что SPID находится в состоянии "golden" или "rollback"

    Если выполнение запроса на модификацию данных прервано или запрос отменен вне определенной пользователем транзакции, изменения должны быть отменены. Такое может произойти в случае, если клиентский компьютер был перезагружен, и/или сетевое подключение было разорвано. Аналогично, изменения, которые внес процесс, выбранный в качестве жертвы при тупиковой блокировке, тоже будет отменен. Откат изменений, вносимых запросами на модификацию данных, часто производится дольше, чем вносятся сами изменения. Например, если оператор Update, Insert или Delete выполнялся час, на откат изменений потребуется не менее часа, потому что сделанные изменения должны быть отменены или должна быть обеспечена транзакционная и физическая целостность в базе данных. Когда это происходит, SQL Server помечает SPID как "golden" или устанавливает ему состояние "rollback" (это означает, что он не может быть прерван или выбран в качестве жертвы при разрешении тупиковой блокировки). Как правило эту ситуацию можно отследить с помощью команды sp_who. Поле Status таблицы sysprocesses показывает статус ROLLBACK, который также можно увидеть с помощью sp_who или в окне текущей активности в Enterprise Manager.

    Решение:

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

6. Блокирование по причине потерянного соединения.

    Если клиентское приложение перезапущено или рабочая станция перезагружена, при некоторых условиях сервер не может сразу же разорвать сетевое соединение. Со стороны сервера клиентское соединение все еще имеется и установленные им блокировки сохраняются. Для получения более подробной информации по этому вопросу см. статью BOL: SQL Server 7.0 "Orphaned Connections"

    Решение:

    Если клиентское приложение было отключено без очистки его ресурсов, Вы можете прервать его при помощи команды KILL. В качестве параметра команде Kill требуется SPID. Например, чтобы прервать SPID 9, просто используйте команду KILL 9.
    Запомните: Выполнение команды KILL может занять до 30 секунд, это вызвано продолжительностью интервала опроса исполнения этой команды.

[В начало]

Влияние приложений на возникновение проблем блокировок

Существует тенденция для решения проблем с блокировками фокусировать внимание на настройке серверной части и проблемах платформы. Однако, обычно это не приводит к решению проблемы а только лишь отнимает много времени и энергии, которые следовало бы направить на изучение приложения-клиента и запросов, которые им используются.
Если в приложении не будет явно предусмотрено управление подключениями, обработка отмены выполнения запроса, ограничение времени ожидания выполнения запроса и т.д., проблема блокирования может стать неразрешимой. Все это должно быть учтено при выборе инструмента разработки приложения для SQL Server, особенно для OLTP сред.
Очень важно уделять больше внимания проектированию системы, а также стадии разработки базы данных и приложения. В частности для каждого запроса должны быть оценены следующие факторы: потребление ресурса, уровень изоляции и стоимость его выполнения. Каждый запрос и транзакция должны быть как можно более "легковесны".
Должно быть обеспечено управление подключениями. Если это не предусмотреть, то возможно при небольшом количестве пользователей работа приложения может оказаться приемлемой, но при увеличении количества пользователей, его выполнение может значительно ухудшиться.
При надлежащем дизайне приложения и запросов, Microsoft SQL сервер способен поддерживать одновременную работу на одном сервере многих тысяч пользователей с небольшим числом блокировок.
Для получения дополнительной информации, изучите разделы SQL Server 7.0 Books Online: "Application Design" (Разработка приложений) и "Understanding and Avoiding Blocking" ("Понимание и предотвращение блокирования". При использовании методов, описанных в этих разделах, достигается успешная работа системы даже при большом количество пользователей.

[В начало]

Ссылки

Для получения дополнительной информации изучите следующие книги:

Microsoft SQL Server 7.0 System Administration Training Kit Microsoft Press, 2001
MCSE Training Kit: Microsoft SQL Server 2000 System Administration Microsoft Press, 2001

А также предлагается пройти следующие курсы:

2072 Administering a Microsoft SQL Server 2000 Database
2073 Programming a Microsoft SQL Server 2000 Database

Информация в этой статье относится к:

  • Microsoft SQL Server 7.0
  • Microsoft SQL Server 2000 (все редакции)

[В начало]

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

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

Что нового в DTS?
Кирк Хэселден
MSSQLServer: Основные новинки SQL Server 2005...
Прямой доступ к базе данных 1С
Рудюк С.А.
Для обмена данными моей системы Корпорация с 1С я разработал шлюз. Вначале, я пытался организовать обмен данными с помощью механизма OLE, вооружившись рядом статей, опубликованных на сайте delphiplus.org и документацией 1С. Мне удалось подключиться к 1С, получить информацию о полях и данных справочников. Однако, этот способ оказался слишком не стабильным и медленно-работающим. Система не хотела работать, когда 1С завершилась аварийно, кроме того у заказчика пришлось чистить реестр, чтобы OLE срабатывал правильно. И самое, пожалуй главное, так это то, что команды не всегда хотели срабатывать. Приходилось много времени тратить на доступ к элементарным операциям. В завершение всего, данные, получаемые посредством OLE не очень полезны - часто показываются только те данные...
Блокировки в MS SQL Server 2000
Алексей Ширшов
MSSQLServer: Обычно блокировки рассматривают совместно с транзакциями. В данной статье упор делается в основном на механизм блокировок, его внутреннее устройство и использование в СУБД MS SQL Server 2000. Предполагается, что читатель хорошо знаком с транзакциями и их свойствами. Давайте вспомним вкратце, какими свойствами должны обладать транзакции в современных СУБД (эти требования носят название ACID - Atomicity, Consistency, Isolation и Durability)...
Deadlocks. Что такое взаимоблокировки и как с ними бороться
Иван Бодягин
MSSQLServer: Проблема взаимоблокировок в реальном приложении может привести к порче достаточно большого количества нервных клеток, и в то же время довольно скудно описана. Цель данной статьи - хотя бы отчасти восполнить этот досадный пробел и объяснить, что такое взаимоблокировки и как с ними бороться. В качестве подопытной свинки выбран Microsoft SQL Server, однако теоретическая часть также относится и к другим серверам баз данных, хотя бы отчасти применяющим блокировочный механизм для обеспечения корректности параллельной обработки транзакций, например, DB2, Oracle, Informix и даже Interbase...
Эскалация блокировок
Иван Бодягин
MSSQLServer: В этом небольшом Q&A рассматривается <проблема> эскалации блокировок (lock escalation). Слово <проблема> намеренно взято в кавычки, так как на самом деле это никакая не проблема, а достаточно остроумное решение других потенциальных проблем. Сначала я попытаюсь объяснить, что же такое эскалация и для чего она предназначена, а потом будет разобрана реализация эскалации блокировок в Microsoft SQL Server 2000...
Работа с объектами большого объема в MS SQL и ADO
Алексей Ширшов
ADO: Эта статья появилась на свет только благодаря вашим не перестающим появляться вопросам типа: <Кто-нибудь может привести пример кода для работы с полями базы, содержащими картинки:используя ADO и Visual C++:>, и тому, что мне лень на них отвечать...
Q&A - К вопросу об идентификаторах
Иван Бодягин
MSSQLServer: Уникальная идентификация записей в таблице, является практически основой реляционных СУБД. Вообще в реляционной теории предполагается, что если две записи ни чем друг от друга не отличаются, то это явная избыточность, и количество таких записей можно сократить до одной. Собственно вопросам этой самой идентификации, каковых возникает на удивление много, и посвящен этот FAQ...
Внутренности оптимизации в запросов
Sinclair
MSSQLServer: Математически, каждый запрос можно представить несколькими способами. Так же, как в обычной алгебре, где a*(b+c) = a*b+a*c, можно выбирать различные способы вычисления. От выбора способа зависит стоимость (в примере мы выбираем между одним сложением и одним умножением и двумя умножениями и одним сложением)...
Введение в ObjectSpaces
Тимофей Казаков
ADO: В .NET Framework управление данными осуществляется на уровне объектов. Каждый объект характеризуется своим состоянием (свойства), поведением (методы), и является экземпляром какого-либо конкретного класса. В рамках приложения классы могут различаться по целевому назначению - это могут быть элементы управления, отображающие интерфейс пользователя, или сервисные классы, отвечающие за связи с базами данных и работу с сетевыми функциями, это могут быть классы "сообщений", обеспечивающие обмен информацией между частями приложения. Все эти сущности объединяет одна общая черта - время их жизни обычно не превышает времени жизни всего приложения. Но, кроме вышеперечисленных категорий классов, можно выделить целый ряд сущностей, время жизни которых превышает срок жизни приложения...
Новые возможности MS SQL Server 2004 "Yukon"
Иван Бодягин
MSSQLServer: Описать более-менее подробно все возможности новой версии Microsoft SQL Server задача не тривиальная, поэтому в данной статье предложен лишь небольшой обзор некоторых нововведений. А именно представления метаданных, схем, немного о безопасности, новые возможности при работе с индексами и новые встроенные типы данных. Я не ставил перед собой цели раскопать все в подробностях, поскольку на данный момент доступна лишь первая предварительная версия сервера и многое может измениться, но основная функциональность, очевидно, останется, поэтому ее и имеет смысл рассмотреть...
MS SQL Server 9 "Yukon". Интеграция с .NET
Антон Злыгостев
MSSQLServer: Не так давно в руки некоторых представителей RSDN Team попал предварительный релиз следующей версии MS SQL Server. Это даже не бета-версия, (что неудивительно - ведь до ожидаемого поступления финального варианта в продажу остался целый год), но мы не могли устоять перед искушением заглянуть в будущее. Со всей ответственностью заявляю - маркетинговые материалы, публикуемые по данному продукту, не отражают и малой доли новых возможностей. Из одного перечисления нововведений можно было бы сделать журнальную статью, поэтому исследователи разделили обязанности между собой. В данной статье рассматривается технология интеграции .NET и MS SQL Serve...
Версионность в Yukon
Иван Бодягин
MSSQLServer: Очередную версию СУБД Microsoft SQL Server, являющейся одним из лидеров рынка, ждали довольно долго и, похоже, не зря. В этом продукте только список нововведений будет достаточно увесистым, а уж полное описание новых возможностей потянет на целую книгу. На данный момент доступна лишь альфа-версия продукта, а релиз ожидается примерно через год, но, тем не менее, уже по этой версии можно понять, что нас ожидает в будущем. В данной статье описывается только одно, но достаточно серьезное нововведение, а именно поддержка версионности. Эту функциональность попытались встроить в классический блокирующий сервер (далее - блокировочник), и очень интересно посмотреть, что же из этого получилось...
Использование XML совместно с SQL. Часть 3. Новые возможности Microsoft SQL Server 2005 (Yukon)
Алексей Ширшов
MSSQLServer: Все большее количество информации в современных промышленных системах представляется в формате XML. С его помощью удобно описывать различные структуры данных, он является межплатформенным форматом и поддерживается большинством языков и библиотек. В XML-документах хранят различного рода информацию, которая может быть критичной для функционирования системы. Хранение подобной информации на диске в виде простых файлов опасно и неэффективно, поэтому использование СУБД для управления XML-документами представляется вполне логичным...
Использование XML совместно с SQL. Часть 2. MS SQL Server 2000 в качестве Web-службы
Алексей Ширшов
MSSQLServer: Эту статью я собирался написать очень давно. Около года прошло с момента появления первой части <Использование XML совместно с SQL>, а это - очень большой срок для современной IT-индустрии. Сейчас уже доступна первая бета новой версии SQL Server-а под кодовым названием <Yukon>. В нем будет просто сумасшедшее количество нововведений, связанных с XML (и не только), одним из которых является возможность напрямую обращаться к серверу через Internet. Как вы знаете, в текущей версии это невозможно: взаимодействие с сервером происходит через специальное ISAPI-расширение, которое является частью пакета SQLXML. Вообще, по сравнению с Yukon (или Oracle9i), поддержка XML в SQL Server 2000 очень слаба. По существу, она ограничивается двумя конструкциями: FOR XML и OPENXML. Вся оста...
Использование XML совместно с SQL. XML и современные базы данных
Алексей Ширшов
MSSQLServer: Этот материал посвящен тем нововведениям, которые появились в SQL и технологиях доступа к базам данных благодаря XML. Статья описывает базовые механизмы и возможности использования XML в MS SQL Server и ADO. Статья не претендует на фундаментальные исследования в этой области, так как XML и SQL Server вещи по природе своей необъятные. Кроме того, уровень поддержки XML в SQL Server постоянно увеличивается, и за всеми изменениями чрезвычайно трудно уследить. Например, после выхода SQLXML 3.0, стало возможным использовать SQL Server в качестве сервера Web-служб. К сожалению, эта тема в статье не освещается, но в будущем, возможно, найдется время и для нее...
Информационная система и реляционная СУБД
Владислав Чистяков
SQL: Итак. "Каждая хозоперация подлежит отражению в одной и той же сумме одновременно по дебету одного счета и кредиту другого". Уберем из этого определения плохо детерминированное понятие "хозоперация" и введем понятие "проводка". Так всем будет понятнее. Получится: "Каждая проводка подлежит отражению в одной и той же сумме одновременно по дебету одного счета и кредиту другого"...
Сравнение скорости доступа к данным (ADO.NET, ADO, ascDB)
Станислав Михаилов
ADO: Об архитектурных различиях ADO.NET и ADO сказано уже немало, однако, также интересно было бы сравнить их скоростные характеристики. В конце концов, именно скорость (точнее, недостаточная скорость) выполнения программы часто раздражает пользователя...
Поправки к статье <Сравнение скорости доступа к данным (ADO.NET, ADO, ascDB)>
Станислав Михайлов
ADO: К сожалению, при тестировании средств доступа к базам данных (ADO.Net, ADO, ascDB) в одном из тестов были допущены несколько ошибок. После исправления ошибок оказалось необходимым внести некоторые корректировки в результаты тестирования, приведенные в предыдущей статье. Я приношу читателям свои извинения, каюсь и надеюсь, что подобного более не повторится...
Иерархические структуры данных в реляционных БД
Михаил Голованов
SQL: Архитектура реляционных баз данных ориентирована на хранение внутри таблиц БД информации о сущностях информационной системы и связях между ними. Каждая из записей таблицы содержит информацию об одном экземпляре. Организация хранения информации о независимых друг от друга экземплярах сущностей (т.е. так называемых <плоских> данных) не вызывает никаких затруднений. Однако, наряду с <плоскими> данными, при построении даже простых информационных систем, приходится хранить в БД и информацию о <вложенных> друг в друга сущностях, т.е иерархические данные. Организация хранения такой информации в реляционных БД проста, но не всегда очевидна для тех, кто впервые сталкивается с подобной задачей. В данной статье я попытаюсь поделиться накопленным опытом...
Протоколирование действий пользователей и версионность записей
Смирнов Андрей
SQL: Одной из частых задач при проектировании базы данных является протоколирования действий пользователей и разработка механизма версионности записей. Существует много различных методов решения этой задачи. В статье рассмотрены наиболее часто используемые при этом методы и проблемы, с которыми можно столкнуться. Для начала надо определиться с терминологией, иначе можно запутаться - у каждого может быть свой взгляд на то, что такое история изменений. Под историей изменений я имею в виду историю изменения записи таблицы базы данных. Помещенные в историю значения являются статическими и уже не могут изменяться (версии значений). Версионность обычно возникает из требования к системе предоставлять состояния записи на моменты в прошлом, протоколирование нужно для выяснения обстоя...
Использование модели briefcase при разработке приложений баз данных. Часть 1.
Михаил Голованов
ADO: Внедрение информационных систем для автоматизации деятельности бизнеса требует от разработчиков баз данных реализации все новых возможностей в разрабатываемых ими приложениях. Создание программного обеспечения, позволяющего пользователям работать лишь в пределах офиса, на сегодняшний день становится явно недостаточно. Сотрудникам офиса требуется обеспечить доступ к информационным массивам фирмы в командировке, из дома, из офиса клиента. При этом пользователи хотят не только просматривать данные, но и иметь возможность вносить в них изменения. Немаловажным требованием со стороны администраторов информационных систем является простота установки и настройки клиентских приложений...
Использование модели briefcase при разработке приложений баз данных. Часть 2.
Михаил Голованов
ADO: В прошлом номере журнала я писал о реализации модели Briefcase с помощью ADO. В отличие от ADO, средства работы с отключенными наборами данных в MIDAS были реализованы с самой первой версии. Реализация модели Briefcase средствами MIDAS несколько проще, хотя и здесь есть свои подводные камни...
Как предоставить пользователю выбор источника данных для создания ADO Connection?
Марк Балонкин
ADO: Для определения источника данных во время выполнения существует DataLink диалог. Создать или отредактировать ADO Connection с помощью DataLink поможет IDataSourceLocator (OLE DB)...
Графика и mssql
Alexey Shirshov
MSSQLServer: Много чего написано про mssql, но ни где не могу найти как занести в базу графический файл (каритинку) и как его потом прочитать (вывести на экран)...
IADORecordBinding - расширение ADO для Visual С++
Марк Балонкин
CPP: Значения полей ADO Recordset-а можно читать и записывать через объекты Field. Однако, в этом случае, приходится работать с преобразованиями из/в тип VARIANT. Альтернативой вызова методов GetFields()->GetItem(long(0)) для доступа к объектам ADO Field, GetValue() и PutValue() для чтения и записи, может служить интерфейс IADORecordBinding, предназначенный для связывания полей ADO Recordset-а с переменными C++...
Q&A: Set и Select
Дмитрий Полюдов
MSSQLServer: Хотелось бы узнать есть ли принципиальная разница между этими двумя путями. И если есть, то какая?...
Как получить список драйверов и источников данных, установленных на компьютере?
Игорь Вартанов
CPP: Список драйверов ODBC, установленных в системе, можно получить минимум двумя способами, один их которых основан на ODBC API, унаследованном от Win16, а второй - на более современном API. Второй способ позволяет в дополнение к списку драйверов получить наборы аттрибутов, поддерживаемых каждым из драйверов...
Как программно создать источник данных?
Игорь Вартанов
CPP: Для этой цели служит функция SQLConfigDataSource(). Она позволяет создать пользовательский или системный источник данных (DSN - DataSource Name). Эта же функция позволяет модифицировать или удалить DSN...
Моделирование иерархических объектов
Сергей Виноградов
SQL: Многим структурам и объектам свойственна иерархичность. За примерами далеко ходить не надо. Почти все объекты состоят из частей, которые, в свою очередь, могут состоять из более мелких деталей. Общественные структуры, как правило, отражают жесткую иерархическую модель подчинения, сходящуюся к одному подразделению или человеку...
Common Language Runtime
Владислав Чистяков
C-sharp: Можно сказать, что VS.Net - это всего лишь новая версия VS - седьмая версия, но это не совсем так. Дело в том, что практически все составные части VS были полностью разрушены и выстроены заново. Короче говоря, Microsoft в очередной раз воплотил в жизнь принцип: МЫ НАШ, МЫ НОВЫЙ МИР ПОСТРОИМ... Но в отличие от прошлых разов, когда Microsoft в целях строительства нового (своего нового) мира разрушал миры своих оппонентов, в этот раз Microsoft, на первый взгляд, разрушил свой, причем уютненький такой мирок. Так что предпосылка <кто был ничем> не срабатывает ;o)...
Поиск в базе данных
web-support.ru
Delphi: Самая распространённая задача, которую решают приложения работающие с базами данных - это поиск необходимых записей по заданному критерию. В Delphi, компоненты ADOExpress включают в себя методы поиска записей, аналогичные тем, которые используются в BDE...
Универсальный процесс не роскошь, а средство передвижения в будущее
Арсений Чеботарев
CASE: Чтобы не путаться в незнакомых материях, в качестве постановки я выбрал сюжет из редакционной жизни - пусть речь идет о распределенном инструменте управления проектами, в частности публикациями и подготовкой номера. В качестве первоисточника по теоретическим предпосылкам UML я использовал фундаментальную книгу Якобсона, Буча и Рамбо "Унифицированный процесс разработки программного обеспечения", выпущенную издательством "Питер". Если вы хотите понять, зачем вообще нужен UML, то эта книга должна стоять первой в вашем списке, поскольку описывает верхний уровень проектирования, то есть отвечает на вопрос "зачем?". Рисовать кружочки и квадратики - это то, с чем, я надеюсь, вы справитесь сами. Но вложить в них смысл можно, только поняв идеологию Унифицированного процесса...
Сравнительный анализ функций средств конфигурационного управления от разных производителей
А. Новичков, Д. Лапыгин, А. Хачатуров
CASE: Данная сравнительная таблица находилась в разработке достаточно долго, но все же появилась, так как нам надоело из семинара в семинар, из внедрения во внедрение, при первой встрече, объяснять, почему мы ориентируемся на ClearCase в его базовой версии...
Deductor:CRM - анализ клиентской базы
BaseGroup Labs©
OLAP: Любая организация в процессе своей деятельности стремится максимизировать прибыль. Для этого ей необходимо правильно организовать работу, ориентируясь на те вещи, которые приносят наибольшую прибыль с наименьшими затратами. Некоторое время назад считалось, что товар или предоставляемые организацией услуги приносят ей прибыль. Сейчас же все большее распространение приобретает клиентно-ориентированная стратегия, где во главу угла ставится клиент и механизмы взаимодействия с ним. Данная стратегия получила название CRM - Customer Relationship Management. На рынке существует большое разнообразие CRM систем [1, 2], однако почти все они предназначены для автоматизации работ по сбору и систематизации данных о клиентах и практически не обладают развитыми средствами анализа. Толь...
Базы данных в Asp.NET
Realcoding.NET
ASP: Доступ к базам данных из прикладных программ ASP.NET является одной из современных методик представления данных посетителям Web сайтов. ASP.NET делает это проще чем её предшественники, особенно при обращениях к базам данных, и обеспечивает поддержку управления данными в базе. В целях обеспечения высокой эффективности таких приложений, рекомендуется использование баз данных, поддерживающих SQL запросы и работающие с приложениями Web серверов. Поэтому, обращение к SQL базам данных будет первой нашей задачей...
Концептуальная модель
Банников Н.А.
SQL: Концептуальная модель наиболее полно отвечает потребностям проектирования баз знаний и построена на ряде принципов, которые мы сейчас рассмотрим. Есть две большие области понятий в концептуальной модели. Обе они построены по принципу иерархического дерева. Первая область - это дерево типов данных, вторая - дерево данных. Дерево типов описывает структуру данных дерева данных, поэтому без дерева типов нет никакой логической целостности дерева данных. Для начала, рассмотрим простой пример с телевизионной камерой. Отраженный свет попадает в объектив камеры, там он разлагается на три составляющие: синий, красный, зеленый. Записывая уровень освещенности трех составляющих света 25 раз в секунду, мы можем составить представление об освещенности и отражающей способности предмето...

[В начало]

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

An Alternative XML Solution
Wayne Fillis
XML is a great tool for sharing and manipulating data. It is becoming (or is already!) a de facto standard in the Enterprise for the sharing of data in the form of XML documents, saved as .XML files (which can be opened and viewed in Internet Explorer) or imported directly into SQL Server. SQL Server 2000 introduced functionality for XML in the form of the FOR XML clause, which you can use in your SELECT statements. This is used to convert your queries into XML. However, the reality for SQL Server 2000 users is not quite so simple
Get a Lean, Mean Dev Machine with the Express Editions of Visual Basic and SQL Server 2005
Brian A. Randell
I only vaguely remember the first time I attempted to write a Windows®-based application. I was using C and writing for the 286. Actually I've tried to block the whole experience from my mind. Considering that I started programming on an HP 3000 mini using COBOL and RPG, programming with Windows was painful by comparison
Replicating Code Modules in SQL Server
Baya Pavliashvili
Replicating table articles can help you maintain multiple databases in sync. But what about stored procedures, views, and user defined functions? Do you have to apply the same code changes on a multitude of servers you manage? Fortunately, there is a way to synchronize the schema of non-table articles; and replicating the execution of stored procedures can provide better performance than replicating individual commands when adding, modifying, or removing rows from tables. Read on to find out how!
Secrets to Successful SQL Server Programming
Buck Woody
You build custom cars for a living. One day, a guy walks into your shop and says, "Here's $30,000. Make me a cool, fast, light, and dependable custom car. I need it in three months. Can you do it?"
DW design - Better than Sorts
Shayne_Nelson
The real payoff of writing a blog like this one is when someone writes a comment which improves on what you've been saying. It's nice when the reader goes the author one better
Clean Data = Clean Profit
Len Dubois
If our institutions of higher learning are the brains of a free society, then our financial institutions must certainly form the muscle. Banks, lending institutions and investment houses today maintain the strength and energy of all aspects of society – on individual, corporate and even government levels. Most first cars and college tuitions are funded through loans to students and parents; companies expand through commercial loans or by issuing stock; and governments fund new programs and expansions by issuing bonds
Best Practices are always the Best
Dinesh Asanka
I personally believe that no matter how much you are knowledgeable in the technical arena, if you are not adopting best practices you will be lost in one day. We as IT professionals best practices have become order of the day. To achieve this, there are many tools around us which will reduce the inconsistency. Today I will discuss about the practices tool for SQL Server professionals. That tool is SQL Best Practices Analyzer
SQL Server: Compare Query Results - Part I
Muthusamy Anantha Kumar
In the Database administration world, it is often necessary to run a query on the production box and then run the same query on the QA or UAT box and compare the results. In this article, I would like to introduce a method that takes advantage of an MS-DOS batch file and SQL Server utility, BCP.exe, to compare the query results executed on two different servers
Introduction to MSSQL Server 2000 Analysis Services: Performing Incremental Cube Updates - An Introduction
William Pearson
Having processed cubes in preceding articles, we are aware that processing calculates the aggregations that have been designed for the cube, and then loads the cube with the data, and the calculated aggregations of the data. While we have looked only at Full Processing in most of my articles, we will expose other approaches to processing in this session. We will then focus on the use of a tool that MSAS provides to help us to exploit one of those options, the incremental processing of our cubes
Cursors with SQL 2000 Part 2
Don Schlichting
This is the second article in the Cursors with SQL 2000 series. In the preceding article, cursor use and basic syntax were covered. A select cursor was created demonstrating the keywords DECLARE, OPEN, FETCH, @@FETCH_STATUS, and DEALLOCATE. These keywords guide basic cursor execution by assigning a TSQL statement to the cursor, moving records into the cursor, retrieving a specific record from the cursor, working with retrieved record, and then closing the cursor. The sample cursor demonstrated that SQL could act on one record at a time, as opposed to its usual method of acting on sets of data. In this article, the sample cursor will be expanded upon to include data modification and record positioning
Clustering for Indexes
James Koopmann
There is nothing spectacular about using indexes per say. However, on many occasions I have come across a variety of SQL coders that never consider validating that the index they think they are using is efficient or even being used at all. We can all put indexes on the columns that we think will be required to satisfy individual queries, but how do we know if they will ever be used. You see, if the underlying table data is constructed, contains, or is ordered in a particular way, our indexes may never be used. One of the factors around the use of an index is its clustering factor and this is what this article is about
Optimizing Microsoft SQL Server Analysis Services: MDX Optimization Techniques: Considering DISTINCT COUNT
William E. Pearson
This is the tenth article of the series, Optimizing MSSQL Server Analysis Services. The primary focus of this series is the introduction of optimization tools and concepts for MSSQL Server Analysis Services (“MSAS”). The series is designed to provide hands-on application of the fundamentals of MSAS optimization from multiple perspectives
Report Authoring: Designing Efficient Queries
Rodney Landrum & Walter J. Voytek II
Learn how to design efficient queries for use with SQL Server Reporting Services from this chapter excerpt from Pro SQL Server Reporting Services. PDF viewer required. Find out more about this book from Amazon.com
SQL Query Performance Tuning
Sajal Dam
Learn the basics of SQL Query Performance Tuning from this chapter excerpt from the book SQL Server Query Performance Tuning Distilled (Second Edition). PDF viewer required. Find out more about this book from Amazon.com
Find Nth maximum value in SQL Server
Hariharan Velayuthan
This aritlce is written by Hariharan Velayuthan. He writes "There are several methods to find out the Nth maximum/minimum value using SQL. This article discusses on such method to find Nth maximum value from a desired table. This article is aimed at users who are in the beginner or intermediate level in SQL Server."
Computing Percentiles in SQL Server
Bob Newstadt
Say you score 570 on the verbal section of the SAT. How well did you do? According to the College Board, 570 falls into the 71st percentile. This means you did better than 71% of the other students who took the test. Percentiles are a useful way to present rankings among a large population. You may want to add percentiles to reports you produce with SQL. This article by Bob Newstadt shows how to calculate a percentile for a given group of scores. It also covers finding a score for a given percentile
Programmatically Save DTS Packages to Files
graz
One of the things that has always bugged me about DTS is how difficult it was to transfer the DTS packages from SQL Server to structured storage (aka a file on the disk). In Yukon, DTS packages are always stored as files but in SQL Server 2000 they are stored in SQL Server by default. It's possible to use the DTSRUN command to automatically save a DTS package in a file. So wrote a little script to generate the statements to save every DTS package as a file
Computing the Trimmed Mean in SQL
Bob Newstadt
This article by Bob Newstadt presents code to compute a trimmed mean in SQL. The trimmed mean is a more robust version of the simple mean (SQL AVG() aggregate function). It is a useful tool for summarizing ill-behaved real world data
Reading a Trace File using C# in SQL Server 2005
graz
SQL Server 2005 includes Server Managed Objects (SMO) which is a managed API to SQL Server. These are primarily used to administrative tasks and replaces DMO. One of the features of this is the ability to programmatically read trace files. This article walks through the code needed to read a trace file
An Overview of SQL Server 2005 for the Database Developer
Matt Nunn
This document provides an overview of new features for database development in Microsoft SQL Server 2005. (14 printed pages)
XML Support in Microsoft SQL Server 2005
Shankar Pal, Mark Fussell, and Irwin Dolobowsky
This article discusses the XML support built into SQL Server 2005. It shows how this support integrates with the client side programming support in the .NET Framework V2.0 and in native code such as OLEDB and SQLXML
Microsoft Plans Security Perks for SQL Server 2005
Clint Boulton
Little by little, Microsoft (Quote, Chart) is peeling away the layers of SQL Server 2005, the company's forthcoming database server software. The Redmond, Wash., software giant unveiled new native security encryption and decryption support as well as government security certification
SQL Server 2000 SP3 Security Features and Best Practices
Girish Chander, James Hamilton, Willis Johnson, Richard Waymire
Get security recommendations on Microsoft SQL Server installation, administration, and deployment, and dig into the details of the SQL Server security model. This paper applies to SQL Server 2000 Service Pack 3 (SP3). It is intended for administrators and developers
Get all from Table A that isn't in Table B
Jamie Thomson
A common requirement when building a data warehouse is to be able to get all rows from a staging table where the business key is not in the dimension table. For example, I may want to get all rows from my STG_DATE table where the DateID is not in DIM_DATE.DateID
SQL Server 2005. Checksum Transformation
Darren Green
The Checksum Transformation computes a hash value, the checksum, across one or more columns, returning the result in the Checksum output column. The transformation provides functionality similar to the T-SQL CHECKSUM function, but is encapsulated within SQL Server Integration Services, for use within the pipeline without code or a SQL Server connection
Server Agent Got an Extra Hour of Sleep, Too
Brian Moran
If you live in the United States, you likely had to remember to set your clocks back 1 hour last Sunday at 2 a.m. (except for those lucky folks in Arizona, most of Indiana, and Hawaii). By now, you've probably managed to change all your clocks—except that pesky one in your car dashboard—and enjoyed your extra hour of sleep. But did you know that SQL Server Agent also got an extra hour of sleep?
Integrated Decision Support: A Data Warehousing Perspective
Salvatore T. March and Alan R. Hevner
Surrounded by analytical tools and models, data warehouses have the potential to transform operational data into business intelligence; enabling effective problem and opportunity identification and critical decision making, as well as strategy formulation, implementation, and evaluation. In this paper, the authors explore the nature of data warehousing for integrated decision support focusing on research issues and their impact on practice
Metadata for Object-Relational Data Warehouse
Thanh N. Huynh, Oscar Mangisengi, and A Min Tjoa
For developing data warehouse (DW) and On-Line Analytical Processing (OLAP) systems, the dominant relational database reaches its limitations. On the way of the development, object-relational (O-R) database is preferred to get over those ones. This paper introduces metadata for data warehouse system on O-R database and specifies new kind of metadata for mapping from object-oriented environment to relational environment. We also present the storage structure for repository this new kind of metadata in O-R database
How to use PivotTables, Excel's data tool du jour
By Joseph Anthony
Businesses large and small routinely amass large amounts of data into Excel spreadsheets. That's fine, but once you've got all that data, how can you better understand it and massage it?
Is 64-Bit Too Extravagant?
Brian Moran
Is a 64-bit SQL Server in your future? Check out this advertisement for an upcoming Microsoft Webcast series about 64-bit computing
Worst Practices - Objects Not Owned by DBO
Andy Warren
Last week I posted an article about something I call 'Worst Practices', or WP for short. These are concepts that are on the other end of the spectrum from 'Best Practices' (BP), yet I see them used all too often. My goal in this series is to bring up some of these practices and discuss why they are bad ideas. If we can't always engage in best practices due to time constraints and other practical matters, we can at least try to avoid the worst mistakes!
All About Transactions - Part 1
Don Peterson
Everyone knows that a transaction is defined as a "Unit of work." The transaction completes only if all the individual steps are successful, otherwise it all rolls back as if nothing ever happened, right? That simple definition belies some devilishly complex behavior on the part of SQL Server. Odds are that if you are a DBA or developer SQL Server's transaction handling behavior has left you scratching your head and muttering "What in the world...?" at some point in your career. I was recently confronted by an angry mob of developers (OK, it was only three...and they were more confused than angry) who were baffled at SQL Server's behavior regarding transaction processing and locking. I was able to explain what was happening and fix their problem, but over the years I have come to realize that there is widespread confusion on the subject. I suspect that the details of transaction handling go largely ignored because they CAN be; in most circumstances the default behavior works well--or well enough. My objective is to pull the lid off the transaction "black box" giving you the tools you need to understand what's going on under the covers. When you understand the details you can make SQL Server do your bidding instead of crossing your fingers and hoping for the best
SQL Server Connection Basics
Ken Henderson
SQL Server 2000 clients connect to SQL Server using a stack of APIs, object libraries, and protocols. Ken Henderson walks through each one and explains how they work and interoperate. (7 printed pages)
SQL Server 2005 Part 1 Introduction
Marcin Policht
SQL Server 2000 will be soon reaching its five-year mark, which in terms of software life-cycle translates into fairly advanced maturity. While this is still far from retirement age, the name of its successor, SQL Server 2005, suggests that it might be time for you to start looking into what the new generation has to offer. The release of SQL Server 2005, originally introduced as Yukon, has already been postponed, but its current Beta 2 implementation (with several incremental Community Technical Previews expected before Beta 3 becomes available early next year) brings promise of a timely RTM stage (planned for summer next year). In this series of articles, we will look into functional highlights of the new incarnation of the Microsoft database management system, focusing on those that are likely to remain unchanged in the final product
XML, T-SQL, and the CLR Create a New World of Database Programming
Eric Brown
The next version of SQL Server, code-named "Yukon," includes quite a few enhancements and expanded language support. For example, Transact-SQL now conforms more closely to the ANSI-99 SQL specification and makes querying more flexible and expressive. Yukon can execute user-defined functions, stored procedures, and triggers written in CLR-targeted languages, including Visual Basic .NET and C#. It supports a subset of the W3C standard XQuery language, and has native XML support. In this article, the author outlines the most significant language features and builds an order-entry sample app
Top Ten Features of Enterprise Manager
Dale Elizabeth Corey
More than once, I have heard, “I never knew that feature existed in Enterprise Manager”, so I thought I would conjure up a Top Ten List for Enterprise Manager. However, I will not say that there may be other features that are not as equally important and these are not necessarily in any order. The nice thing about Enterprise Manager (see Figure 1) is that it can make some of the daily mundane chores a lot easier
Optimizing Microsoft SQL Server Analysis Services: Optimize Query Performance with a Derived Measure
William E. Pearson, III
Because a significant part of my practice consists of being called upon to tune MSAS implementations performed by others, I come across the less-than-optimal use of calculated members quite often. As most of us know, calculated members are dimensions or measures (depending upon the designated parent dimension) that are constructed, using a formula, from other dimensions or measures in our cubes. A typical example of a calculated member that is designed for a measure, to which we will refer in this article as a calculated measure, is a Profit calculated measure that is created by subtracting a cost / expense measure from a sales / revenue measure. Another common calculated measure is a variance measure, which is created by taking a difference between an actual and a budgeted value (or similar kinds of values), among other approaches
Building a Database Documenter, Part 1
Inc. InformIT
In my storied DBA career, I've come into more than my fair share of shops that were in, well, a bit of a crisis. The former DBA had left suddenly, or the previous staff was a little less than fastidious about documenting the changes of their systems
Customer Relationship Management (CRM)
Inc. InformIT
Have you ever noticed that kids have a lot of brand loyalty? When I was a kid, I loved one cereal: Quisp. It's basically a sugar product held together by some sort of organic glue, which made it, of course, the best cereal in the history of the universe. I wouldn't let my mom buy anything else
Enterprise Resource Planning
Inc. InformIT
SQL Server has plenty of uses as a platform for applications. Applications come in all sizes, and one of the largest is Enterprise Resource Planning, or ERP. Enterprise Resource Planning really isn't a piece of software, though; it's a category
Using Graphics Files with SQL Server
Inc. InformIT
Wouldn't it be great if the police and the intelligence agencies really had those database systems they show on television? You know the ones: the cop types in a name, and the bad guy's location instantly pops up on the screen. They zoom right in to the briefcase the villain is carrying in his hand
SQL Questions & Answers: SQL Server Express, Encrypting Data, and More
Nancy Michell
Database Sizer Tools
Calling a Stored Procedure from Another Stored Procedure
Microsoft's SQL Server Development Team
I want stored procedure A to call stored procedure B, which returns a set of records from a table. Then, I want stored procedure A to perform work on these records. How do I call stored procedure B from within stored procedure A?
Two support utilities are available for stress testing and performance analysis in SQL Server
KB887057
The Microsoft SQL Server support team uses several internally-written utilities to make it easier to work on a typical customer support case. These utilities may also be useful to database developers and system administrators who work with Microsoft SQL Server 2000. This article describes two main utilities, the Read80Trace utility and the OSTRESS utility. These utilities are provided as part of the Microsoft SQL Server Support Escalation Services Utilities (SQLEEUtils). This article also provides a link to download these utilities
You may not be able to identify or modify rows after you retrieve the rows from SQL Server 2000 by using browse mode
KB886834
If you retrieve rows from a Microsoft SQL Server database by using browse mode in a client application and the rows contain null values, you may not be able to identify the appropriate rows and perform the correct manipulations to the rows in the result set. Additionally, when you try to update the rows by using the additional key column metadata that is returned by the SQL Server program, the rows are not correctly updated in the SQL Server database
Analysis About Dimensions
Ramunas Balukonis
In my previous article (Analysis About Analysis Services) I showed how to make analysis from the log of Analysis Services. As the information about olap queries are modest, we should try to get as much information from the log as we can. For example, we should known how many partitions were read by the query. This is written in the columns MOLAP_Partitions and ROLAP_Partitions. When the value of MOLAP_Partitions and ROLAP_Partitions columns is 0, then the query was answered from the server cache. In this article I'll describe how to get information from the DataSet column in the querylog table
To Metadata or Not To Metadata
Tom Reamy
To metatadata or not to metadata, that is the question. Whether 'tis nobler in the mind to suffer the slings and arrows of outrageous search results Or to take up metadata against a sea of irrelevance And by organizing them, find them?
Compare Query Results - Part II
Muthusamy Anantha Kumar
In part I of this article, we discussed how to compare the query results executed on two different servers. In part II, we are going to discuss how to compare results of the same query on the same or different server but on different databases. This article takes advantage of a MS-DOS batch file and SQL Server utility BCP.exe
RSS Feeds from SQL Server
Inc. InformIT
The average person today has access to more information than at perhaps any time in history: print media, billboards, television, radio, and, of course, several methods that the modern computer provides. With this plethora of avenues for information, users struggle to find a way to limit the stream of data

[В начало]

ФОРУМ SQL.RU

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

Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
Можно ли одним select'ом решить эту задачу?
SQL Server Health and History Tool (SQLH2) Reports
Как по вашему, предст. ли CPU узкое место, см. картинку
Непонятное ограничение в 160 транзакций в секунду!
Запрос на UPDATE
Книга по Reporting Service
Шифрование/дешифровние паролей
Как из SQL Загрузить любой сайт?
Не приходит Raiserrror к клиенту.
Как уменьшить размер БД?
большая табличка...
Как узнать права ?
Хронология данных - ваши комментарии
Удалить все временные таблицы
Как проверить на Null
и опять запрос на периоды по времени
Почему MSQSL Server не прерывает выполнение программы на операторе с ошибкой
Импорт курсов валют
как узнать номер ключа последнего INSERT

[В начало]

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

опять sybase и mssql
Перевести на T-SQL с VBScript-а.
Trigger For Log
Profiler и Audit Object Derived Permission Event
Проблема вызов функций DSO через T-SQL
Вопрос про соединения в DTS пакете, созданном Export Wizard
СЕМИНАР: Data Mining & Особенности реализации учетных задач
Merge репликация, проблема с identity
Удаление статьи из публикации

[В начало]

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