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

СОДЕРЖАНИЕ

1.СТАТЬИ
1.1.Основы ввода-вывода Microsoft SQL Server. Часть 2 (окончание)
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа
4.КНИГИ
4.1.Рефакторинг баз данных: эволюционное проектирование
 

 

СТАТЬИ

DiskPar.exe

Утилита diskpar предназначена для предотвращения проблем в работе сервера, связанных с выравниванием и нарушением границ сектора. Во время работы подсистем SQL Server выравнивание по границам сектора должно быть правильным, иначе не получить оптимальной производительности. Производители подсистем ввода-вывода должны следовать имеющимся рекомендациям, которые необходимо выполнять для обеспечения правильного, с точки зрения SQL Server, выравнивания по границам сектора. Эти же рекомендации применимы и к Microsoft Exchange Server. То, что написано ниже, взято из документации по Microsoft Exchange Server и всё это применимо к SQL Server.
Не смотря на то, что некоторое хранилища выдают неправильную информацию о размере сектора и трека, использование утилиты diskpar помогает предотвращать нарушение границ в кэше. Если мы имеем дело с подобным диском, то каждое энное (обычно 8-ое) чтение или запись будет выходить за границу, и диск должен будет выполнить две физические операции.
Вначале любого диска есть раздел, который зарезервирован для мастер-блока начальной загрузки (MBR) и который занимает 63 сектора. Это означает, что если наш пользовательский раздел начинается с 64-го сектора, он может пострадать от нарушения границ раздела. Большинство производителей использует начальное смещение по 64-й сектор.
Стоит заглянуть в предлагаемую производителем спецификацию, чтобы убедиться в стандартности этой установки для выбранного Вами дискового массива.

Хранилища данных высокой доступности в постоянной готовности

SQL Server 2005 открывает для решений с высокой доступностью новую программу для хранилищ в постоянной готовности (Always On). Поставщики подобных хранилищ проанализировали соответствие этих решений требованиям для Microsoft SQL Server и опубликовали документы, в которых подробно описано, как соответствующие решения могут использоваться совместно с SQL Server, чтобы обеспечить постоянную готовность. Для получения более подробной информации, см. What are SQL Server Always on Technologies?

SQLIOSim

Утилита SQLIOSim выпущена взамен SQLIOStress. Она используется для тестирования характерной SQL Server нагрузки ввода-вывода, и не требует для этого установки самого SQL Server. В тестах не используются настоящие базу данных и журналы SQL Server, но они эмулируются. Эта утилита имеет большой диапазон установок для характеристик тестирования, позволяет регулировать объём используемой памяти, число файлов баз данных, позволяет сжимать и увеличивать файлы, работать с файлами больше 4ГБ и мн. др.
Мы рекомендуем использовать SQLIOSim для проверки подсистем ввода-вывода перед тем, как Вы приступите к установке SQL Server. Это поможет Вам обезопасить данные.

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

    Важно: Утилиты SQLIOSim и SQLIOStress используются также и в Microsoft Hardware Compatibility Labs, а также и многими производителями дисковых подсистем, это позволяет им удостовериться в том, что подсистема ввода-вывода соответствует требованиям SQL Server для операций ввода-вывода. Если SQLIOSim или SQLIOStress выдают ошибки, это говорит о том, что подсистема ввода-вывода не соответствует уровню совместимости HCL-compliant. Это может привести к серьезным повреждениям данных или даже к их потере.

Заключение

Для получения более подробной информации:
http://technet.microsoft.com/ru-ru/sqlserver/default.aspx

Этот документ Вам помог? Пожалуйста, оцените полезность этого документа. Масштаб оценок: от 1 (очень плохо) до 5 (отлично), Ваша оценка этого документа?

Ссылки

Когда Вы занимаетесь установкой подсистемы ввода-вывода, необходимо учесть очень много разных аспектов. В этом разделе собран список документов, которые было бы полезно изучить.
Для получения информации о связанных с вводом-выводом обновлениях, Вы можете также посетить веб-страницу http://www.microsoft.com/sql/support.

Публикации на SQL.RU

  • http://www.sql.ru/articles/Publications.shtml#151

  • SQL Server Always Storage Solution Review Program

  • http://www.microsoft.com/sql/AlwaysOn

  • Certification Policy

  • KB913945 - Microsoft does not certify that third-party products will work with Microsoft SQL Server

  • KB841696 - Overview of the Microsoft third-party storage software solutions support policy

  • KB231619 - How to use the SQLIOStress utility to stress a disk subsystem such as SQL Server

  • Fundamentals and Requirements

  • White paper - SQL Server 2000 I/O Basics (applies to SQL Server versions 7.0, 2000, and 2005)

  • KB230785 - SQL Server 7.0, SQL Server 2000 and SQL Server 2005 logging and data storage algorithms extend data reliability

  • KB917047 - Microsoft SQL Server I/O subsystem requirements for the tempdb database

  • KB231347 - SQL Server databases not supported on compressed volumes (except 2005 read only files)

  • Subsystems

  • KB917043 - Key factors to consider when evaluating third-party file cache systems with SQL Server

  • KB234656 - Using disk drive caching with SQL Server

  • KB46091 - Using hard disk controller caching with SQL Server

  • KB86903 - Description of caching disk controls in SQL Server

  • KB304261 - Description of support for network database files in SQL Server

  • KB910716 - Requirements for SQL Server 2005 and SQL Server 2000 to support remote mirroring of user databases

  • KB833770 - Support for SQL Server 2000 and SQL Server 2005 on iSCSI technology components

  • Design and Configuration

  • White paper - Physical Database Layout and Design

  • KB298402 - Understanding How to Set the SQL Server I/O Affinity Option

  • KB78363 - When Dirty Cache Pages are Flushed to Disk

  • White paper - Database Mirroring in SQL Server 2005

  • White paper - Database Mirroring Best Practices and Performance Considerations

  • KB910378 - Scalable shared database are supported by SQL Server 2005

  • MSDN article - Read-Only Filegroups

  • KB156932 - Asynchronous Disk I/O Appears as Synchronous on Windows NT, Windows 2000, and Windows XP

  • Diagnostics

  • KB826433 - Additional SQL Server Diagnostics Added to Detect Unreported I/O Problems

  • KB897284 - SQL Server 2000 SP4 diagnostics help detect stalled and stuck I/O operations (applies to SQL Server 2005)

  • KB828339 - Error message 823 may indicate hardware problems or system problems in SQL Server

  • KB167711 - Understanding Bufwait and Writelog Timeout Messages

  • KB815436 - Use Trace Flag 3505 to Control SQL Server Checkpoint Behavior

  • KB906121 - Checkpoint resumes behavior that it exhibited before you installed SQL Server 2000 SP3 when you enable trace flag 828

  • WebCast - Data Recovery in SQL Server 2005

  • Known Issues

  • KB909369 - Automatic checkpoints on some SQL Server 2000 databases do not run as expected

  • KB315447 - SQL Server 2000 may be more aggressive with Lazy Writers than SQL Server 7.0

  • KB818767 - Improved CPU Usage for Database Logging When Transaction Log Stalls Occur

  • KB815056 - You receive an "Error: 17883" error message when the checkpoint process executes

  • KB915385 - A snapshot-based database backup restore process may fail, and you may receive an error message in SQL Server 2005

  • Support Assistance (http://www.microsoft.com/sql/support)

  • Utilities

  • Download - SQLIO Disk Subsystem Benchmark Tool

  • Download - SQLIOStress utility to stress disk subsystem (applies to SQL Server 7.0, 2000, and 2005 - replaced with SQLIOSim)

  • [В начало]

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

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

    Какой из генераторов отчетов самый быстрый?
    Сергей Медведев
    Думаю, у каждого, кто столкнулся с выбором инструмента для генерации отчётов, возникал вопрос - как именно выбирать, что сравнивать? По размеру? А по какому именно размеру? К примеру, по размеру, который добавится к вашему приложению? Но есть генераторы отчётов, которые к приложению вроде как ничего и не добавляют, а идут в отдельном dll-файле, который по своим размерам раз в несколько больше файла самого приложения. Или, к примеру, к самому исполняемому файлу добавляется совсем немного, зато файлы отчётов буквально "перевешивают" приложение... Или по размеру файла отчёта? Наверное, это будет более весомый фактор, но не решающий. По удобству для пользователя? А в чём его измерить? По скорости генерации отчётов? Или же, при нынешних скоростях процессоров, скорость не должна играть решающего значения? Как оказывается, играет. Ведь далеко не каждое приложение генерирует только один простенький отчёт в конце рабочего дня. Если приложение должно быть распределенным, многопользовательским, то, вероятно, скорость генерации и компактность отчётов будут решающими.

    Новый блог участника Russian SQL Server Club
    Александр Гладченко
    Вчера появилось первое сообщение в техническом блоге Яна Либермана: Криптография в SQL Server 2005. Кому это нужно? Многие из вас, наверное, помнят замечательные доклады Яна на конференциях (где они неизменно попадали в число лучших) и на семинарах клуба в Москве. Презентации его докладов доступны по представленным ниже ссылкам. Ян настроен вести свой блог активно, т.ч. очень рекомендую вам подписаться на его веб-канал, нас ждёт много интересного…

    DTS: переход от Microsoft SQL Server 2000 к Microsoft SQL Server 2005, или Несколько подводных камней
    Марина Чернявская
    Данный документ не претендует на полноту описания трудностей, которые встречают разработчика SQL Server 2000 при попытке перейти на 2005-ю версию и - вот именно, создать там пакет Data Transformation Services (которые теперь переименованы в Integration Services и вообще поменяли лицо). Он включает всего лишь несколько проблем, с которыми пришлось столкнуться лично автору. Все эти проблемы были решены с помощью Google, но возможно, этот документ будет иметь некоторое преимущество ...

    SQL-анализ
    Валерий Коржов
    Возможности программного обеспечения Microsoft SQL Server 2005 далеко не ограничиваются функциональностью, характерной собственно для систем управления базами данных. В частности, это подтверждается тем фактом, что в поставку данного продукта в его корпоративной комплектации включен набор компонентов бизнес-аналитики, который называется Business Intelligence Platform. Он предназначен не столько для управления хранением данных, сколько для их консолидации и обработки. Обсуждению этого набора компонентов была посвящена основная часть семинара Softline "Обзор возможностей Microsoft SQL Server 2005".

    Данные - людям
    Леонид Черняк
    Конференция "Многомерное моделирование для BI-систем", организованная Sybase, оказалась интересной не только программой, но и персоналиями

    Использование Report Builder
    Андей Слепитский
    Для отчетности в Microsoft Dynamics CRM существует ряд инструментов - Microsoft Excel или SQL Server Reporting Services. Зачем понадобился еще один? Дело в том, что возможности конечных бизнес-пользователей ограничены, если они хотят построить какой-либо отчет по нескольким объектам, например, отобразить всех клиентов и связанных с ними потенциальные продажи и т.д. В этом случае, надо использовать либо отчет SSRS, либо использовать Excel, но тогда от пользователя требуется знание того, как данные хранятся в системе и умение написать SQL запрос. К сожалению, не все бизнес-пользователи умеют писать запросы. И здесь может помочь Report Builder, который является компонентом SQL Server 2005 Reporting Services.

    Немного о формате даты в отчетах
    Андей Слепитский
    Партнер попросил помочь с проблемой - дата в отчете выводилась по американскому стандарту, хотя в самой базе CRM все было правильно (в русском формате). Т.е. вместо 02.04.2007 12:44:52 отображалось 4/2/2007 12:44:52 PM. Задача решается очень просто:

    ADO.NET vNext: Part 2
    Daniel Kornev
    В продолжение начатого разговора, приведу простые примеры того, как работать с ADO.NET vNext. Начнем с архитектуры ADO.NET Entity Framework, в контексте нашего приложения.

    Хостинг на платформе IIS7 теперь доступен в России
    Gaidar Magdanurov
    Одна из лучших хостинговых компаний в России Parking.ru запустила хостинг на базе Windows Server 2008/ ASP.NET или PHP/ SQL Server 2005. Это замечательная возможность испытать возможности новое версии Internet Information Services 7.0. Для PHP разработчиков особенно интересной будет возможность использования FastCGI модуля, позволяющего достичь потрясающей производительности PHP-приложений на платформе Windows.

    Производительность MOSS и SQL 2005 на одной машине
    Dmitry Andreev
    Часто бывает нужно установить какой либо из серверов MOSS на одну машину вместе с SQL 2005. Например сделать виртуальную машину для каких либо тестов. При этом если памяти не очень много, то все начинает заментно тормозить.

    Использование хэш-ключей вместо строковых индексов в MS SQL Server
    Arthur Fuller
    Вашему приложению может потребоваться индекс на основе длинной строки символов или, что еще хуже, конкатенации двух строк или строки и одного-двух целых чисел. Для небольшой таблицы вы можете не заметить какого-либо отрицательного влияния такого индекса. Но если предположить, что рассматриваемая таблица содержит 50 миллионов записей? Теперь вы не сможете не заметить воздействия, которое скажется как на требованиях к хранению, так и к производительности поиска.

    Как можно спрятать Sql запросы от Profiler для Sql Server 2000
    Никита Егоров
    Недавно прочитал в одной умной, что Profiler игнорирует запросы, в которых используется системная процедура sp_password

    Планировщик непривилегированного режима в SQL Server 2000
    Ken Henderson
    В статье дается развернутое описание используемого в SQL Server 2000 планировщика непривилегированного режима (User Mode Scheduler, UMS), которое ориентировано на то, чтобы помочь разработчикам повысить эффективность своих приложений. UMS повышает масштабируемость сервера и предоставляет больше возможностей управления, чем это делает штатный планировщик Windows.

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

    Microsoft SQL Server 2008 CTP доступен для загрузки
    Sergey Zwezdin
    Недавно стал доступен для загруки SQL Server 2008 CTP (codename "Katmai"). Скачать SQL Server 2008 CTP можно здесь - https://connect.microsoft.com/sqlserver?wa=wsignin1.0

    Как определить, какой CD-KEY использовался для установки SQL Server 2005
    Александр Гладченко
    Не первый раз сталкиваюсь с тем, что возникает необходимость узнать, с каким ключом был установлен сервер. Явного способа в документации и в интернет пока найти не удалось, поэтому предлагаю вам свой метод, который не претендует на некое "супер-знание" и применим отнюдь не во всех случаях… Суть метода в том, что информация об использованном ключе храниться в логах установки. В частности, мне удалось найти ключ (хорошо, что я заведомо точно знал - какой) в файле: SQLSetup0001_хххххххххх_Tools.log (где буквы "х" заменяют имя сервера) В этом файле логировались все вносимые в системный реестр изменения, в частности, было видно, что в ветку реестра:

    Доступен для скачивания SQL Server 2005 Books Online (Май 2007)
    Александр Гладченко
    4 июня 2007 года на MSDN2 обновились локализованные веб-версии BOL, теперь в интеренте доступна февральская версия документации на 9 языках, включая русский:

    BOL IE Link Converter
    Виталий Чужа
    В ответ на пост Александра Гладченко написал небольшую утилитку, автоматизирующую процесс. Конвертирует ссылки в обе стороны, согласно указанному в посте шаблону. Для работы необходим установленный .Net Framework 2.0.

    System Center Data Protection Manager Beta 2
    Ирина Наумова
    На англоязычном сайте Майкрософт выложена версия System Center Data Protection Manager Beta 2. Продукт предназначен для централизованного резервного копирования и восстановления файлов. Ресурс на русском языке, посвященный System Center Data Protection Manager, находится здесь. Также на сайте можно получить дополнительную информацию о работе DMP, например, по работе с SQL Server имеются следующие материалы:

    Информация по SQL 2008 (web cast)
    Алексей Халяко
    О том, что нового будет в SQL 2008 можно будет посмотреть тут:

    Новое имя: SQL Server 2008 и выпуск CTP3
    Алексей Халяко
    Ну, теперь оно случилось официально: следующая версия SQL Server, известная под кодовым именем Kатмаи, будет официально называться SQL Server 2008, что и будет объявлено на TecEd 4 июня.

    Dundas и SQL Server 2008
    Андей Слепитский
    В продолжение поста о SQL Server 2008. Одним из преимуществ использования SQL Server 2008 для пользователей Microsoft Dynamics CRM будет подсистема отчетов. В состав Reporting Services будет включен компонент Dundas's Data Visualization Technology от нашего золотого партнера - Dundas Software. Дополнительную информацию можно найти на нашем сайте и на сайте компании Dundas Software.

    SQL Server 2008 CTP доступен для загрузки
    Anton Belousov
    Вчера стал доступен для загрузки SQL Server 2008 CTP (Community Technology Preview). Возможно это и "баян" для многих, т.к. мои коллеги уже успели рассказать об этом тут и тут.

    [В начало]

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

    Defining the Direction of LINQ to Entities/EDM
    Roger Jennings
    The ADO.NET team today posted an invitation targeted at "experienced IT developers" among Tech*Ed 2007 attendees to "attend a focus group on LINQ/EDM ... to help define the direction of LINQ to Entities." I'm not attending Tech*Ed because Microsoft moved it from New Orleans, a city I love almost as much as San Francisco, to Orlando, which I detest. (I'd rather travel to Flint, Michigan, than Orlando, Florida.)

    LinRegPoint() MDX Function Sample in AdventureWorks
    Paul Goldy
    Thanks to Mosha Pasumansky (no surprise) for the real workings of this sample. Mosha provides a sample of the LinRegPoint() MDX function on the SQL 2000 Foodmart sample database at this link: http://sqljunkies.com/WebLog/mosha/archive/2004/12/21/5689.aspx

    Reducing Database Size by Using Vardecimal Storage Format
    Sunil Agarwal, Hermann Daeubler
    Learn about the new storage format for storing decimal and numeric data in SQL Server 2005 SP2. Details include when and how to enable vardecimal storage format, restrictions, space savings, and its impact on the performance of your workload.

    SQL SERVER - User Defined Functions (UDF) Limitations
    Pinal Dave
    UDF have its own advantage and usage but in this article we will see the limitation of UDF. Things UDF can not do and why Stored Procedure are considered as more flexible then UDFs. Stored Procedure are more flexibility then User Defined Functions(UDF).

    Mimic SQL Server Management Studio reports for Reporting Services
    Michelle Gutzait
    One of the most useful tools shipped with SQL Server Management Studio is the standard reports. Owning the source code in these reports could satisfy a number of needs in your organization. Perhaps you want to:

    Non-standard RAID levels primer: RAID 5E and 5EE
    Scott Lowe
    In this article on non-standard RAID levels, Scott Lowe describes the advantages and disadvantages of RAID 5E and RAID 5EE. In my previous article on non-standard RAID levels, I talked a bit about RAID 1E, which is a RAID level that provides RAID-10-like functionality but with an odd number of disks. Although disks are pretty cheap these days, you never know when you might need to save a few bucks on a project! In this article, I'll provide a look at two other non-standard and closely related RAID levels -- RAID 5E and RAID 5EE.

    Perform bulk copies with .NET 2.0's SqlBulkCopy class
    Tony Patton
    The .NET Framework 2.0's SqlBulkCopy class allows you to easily move data programmatically from any data source to a SQL Server table. Learn how to use SqlBulkCopy to streamline data transfers.

    Scalable shared databases are supported by SQL Server 2005
    Microsoft
    Scalable shared databases are supported by Microsoft SQL Server 2005 Enterprise Edition. This article is a preview of the "Scalable shared database" topic that will be published in a future update of SQL Server Books Online.

    SqlMethods Stealth Class Enables LIKE and DATEDIFF for LINQ to SQL
    Roger Jennings
    Anders Hejlsberg took the wraps off LINQ to SQL's SqlMethods class hidden in the System.Linq.Data.SqlClient namespace with this ADO.NET Orcas forum post. Google and Windows Live searches for linq sqlmethods return only one unique hit. Yahoo! Search returns 3 hits, one of which is the result of a typo and the other two duplicate the primary Google hit with omitted results included.

    More on Runs and Streaks in SQL
    Jeff Smith
    That's right boys and girls, it's what you've been waiting for all weekend: Another edition of the mailbag!

    Answer: How do you create a byte with the value of 00000001 in SQL Server?
    Julian Kuiters
    My team mate Pi asked me today: how do you create a byte with the value 00000001 in SQL Server? The answer is to create an integer representation of the byte's value, and cast it to binary.

    Source Control and Databases
    Andrаs Belokosztolszki
    Many DBAs must have made and heard the request for a source control mechanism for SQL Server databases. It sounds like a brilliant idea. Once implemented, one could easily go back to a specific database schema version, compare it against the current version, and have plenty of information for auditing, or for reverting a database object to the previous version.

    Passing a Table to A Stored Procedure
    Jacob Sebastian
    In the first article of a new series on T-SQL tips, Jacob Sebastian brings us a very useful technique. How to pass a table to a stored procedure so some set of rows can be operated on using some business logic.

    Speed Up Performance And Slash Your Table Size By 90% By Using Bitwise Logic
    Denis Gobo
    You have all seen websites where you can pick a bunch of categories by selection a bunch of check boxes. usually what you do is store those in a lookup table and then you create another table where you store all the categories for each customer.

    It was Microsoft wot done it. Database myths and legends (Part 9)
    Mark Whitehorn
    What did happen to that Bloor Report? Database myths and legends (Part 9) In this series we're looking at the myths and legends of the database world - some are true, some false. The myth under the spotlight today is: Bloor Research once produced a report that slammed SQL Server so much that Microsoft had it suppressed. OK, let's start at the top. Bloor Research is a highly respectable analyst company. Has it ever looked at scalability in database engines? A quick Google of the words "Bloor Scalability Database" produces over 40,000 hits and simply following a couple of links will convince you that, of course, the company has done so. This kind of report is meat and drink to Bloor.

    Using SQL Server Database Mirroring with Office SharePoint Server and Windows SharePoint Services
    Microsoft
    Database mirroring is a new technology in Microsoft® SQL Server™ 2005 database software that can deliver high availability and high performance solutions for database redundancy. In database mirroring, transactions are sent directly from a principal database and server to a mirror database and server whenever the principal database's transaction log buffer is written to disk. This technique can keep the mirror database nearly up to date with the principal database. You can optionally use a third server, a witness server, to enable automatic failover from the principal server to the mirror server. Database mirroring is a primarily software solution for increasing database availability. Mirroring is implemented on a per-database basis and works only with databases that use the full recovery model. The simple and bulk-logged recovery models do not support database mirroring. Database mirroring offers a substantial improvement in availability over the level previously possible by using SQL Server and provides an easy-to-manage alternative or supplement to failover clustering or log shipping. When a database mirroring session is synchronized, database mirroring provides a hot standby server that supports rapid failover with no loss of data from committed transactions. During a typical mirroring session, after a production server fails, client applications can recover quickly by reconnecting to the standby server. For more information about database mirroring, see Database Mirroring in SQL Server 2005 (http://go.microsoft.com/fwlink/?LinkId=83566&clcid=0x409). Administrators of servers running Microsoft Office SharePoint® Server 2007 or Microsoft Windows® SharePoint Services can use database mirroring and notify Office SharePoint Server or Windows SharePoint Services if the database server changes to recover quickly from database failures.

    The SQL Server Working Set Message
    Bob Dorr
    I spent several days last week investigating reported case trends and I will attempt to summarize the findings for you.

    Troubleshoot a process (SPID) using tools & TSQL queries
    Satya SK Jayanty
    First thing a DBA would follow to troubleshoot a query is to look at the process (SPID) ID for that query and with the help of Enterprise Manager tool looking at the Current Activity option under management pane will give you list of processes that are running on the SQL Server instance. Similarly you can take help of SP_WHO or SP_WHO2 to get such information, that may not be easy to understand for most of the started DBAs

    Get SYSMON counters using a TSQL query aka DMVs
    Satya SK Jayanty
    SYSMON aka PERFMON is a best tool to find out the system resources usage on a Windows server, similarly SQL Server 2005 has list of such useful DMVs to get you more information on many of the SQL Server-related objects, instances and counters by using the dm_os_performance_counters View.

    Read Committed and Large Objects
    Craig Freedman
    In my last post, I explained that SQL Server holds read committed locks until the end of an update statement (instead of releasing the locks as soon as each row is released) if there is a blocking operator between the scan or seek of the rows to be updated and the update itself. In this post, I'll take a look at a similar result involving large objects.

    Holy Snikes the Dundas OLAP Services stuff is nice!
    Russell Christopher
    Looking for different ways to allow users to browse your cubes? Dundas has an online demo of their very nice Dundas Chart OLAP Services product. Check it out here: http://demos3.dundas.com/olapdemostaging55/ I know this isn't "breaking news", and indeed these controls have been blogged about before…but the look and feel is great, they use Ajax, and you get the ability to save reports locally and load them up again later. Tell me you don't want this control after playing with it! For those of you trying to move away from the deprecated OWC, this would make a great alternative.

    How Useful Are Those Indexes
    Gregory A. Larsen
    Having indexes on your tables provides a method to improve performance of your T-SQL queries. However, indexes also increase the amount of work SQL Server needs to perform when inserting, updating, or deleting rows. As time passes, index performance can slow down as indexes become fragmented. As a DBA, you need to understand how your applications use the available indexes so you can make sure the indexes are performing optimally and are not causing excessive work for SQL Server. In this article, I will discuss one Dynamic Management View (DMV) that you can obtain information from that will help you understand how your indexes are being used.

    Upgrading to SQL Server 2005: Six migration tips
    Serdar Yegulalp
    Upgrading to a new version of SQL Server isn't like patching a desktop application or even moving to a new version of Microsoft Office. It has broad-reaching consequences and can affect the behavior of other applications that talk to SQL Server: data-driven Web sites, reporting tools and so on. Here are six things to bear in mind as you're planning and executing the upgrade to SQL Server 2005:

    Database High-Availability: Soup to Nuts
    William Brewer
    Unpleasant things occasionally happen to production databases. Much of this is due to chance. Occasionally, you'll be unlucky, but your good luck increases with the effort you put into ensuring the robustness of your database. The extent of your occasional misfortune will decrease in direct proportion to the increasing resilience of your database architecture and your level of preparedness.

    SQL Server Performance Crib Sheet
    Grant Fritchey
    Have you heard this statement or others like it? This is usually delivered early in a development cycle when someone, probably not the person spewing these words of "wisdom," suggests that performance should be taken into account when designing and building the database, or laying out the new server configuration, or writing a trigger. Don't listen to them. Performance is as important to a small system as it is to a large one. A tiny database with 10 users is as important to those 10 users as Amazon.com is to the 10 million users it supports. It's true that worrying about the difference between a 20ms and a 5ms query on the small system may be a waste of time, but there is plenty of work to do before you get down to worrying about that sort of minutiae. The goal of this crib sheet is to provide, in broad strokes, a place to get basic performance information and tuning that applies equally well to SQL Server 2000 or 2005.

    Parallel Statistics Update
    Merrill Aldrich
    Recently in my own practice, I was abruptly reminded of the value of SQL Server's Update Statistics with Full Scan: to make a long story short, we had a system that was getting a bad query plan that would consistently peg one of the CPUs for hours at a time. If multiple requests for the same data came in, more CPUs would be taken up, eventually using 100% of all processors. The query was a simple one, and we were stumped by this issue for a time. It turned out that the maintenance on the database in question just had too low a sampling rate for Update Statistics, which had the effect of causing the optimizer to choose a bad plan. Changing to Update Statistics with Full Scan solved the issue.

    The Differences Between SQL Server 2000 and 2005 - Part 2
    Steve Jones
    Steve Jones continues with his look at how SQL Server 2005 differs from SQL Server 2000, this time tackling the differences from a developer perspective.

    Working with MDX Queries
    William E. Pearson
    Next, expand your hands-on exposure to MDX by using the sample application to replicate some of your earlier efforts with the PivotTable list. This will give you a chance to understand the underlying MDX queries that were invisible as you constructed the earlier report visually.

    SQL Server 2005: Concat values XML Style
    Mladen Prajdic
    A few days ago i showed how to split string with XML.

    Troubleshooting Memory Issues in SQL Server 2005
    Glenn Berry
    Microsoft's Bob Dorr, who is a senior escalation engineer in PSS, has a great post that has some troubleshooting steps for memory issues in SQL Server 2005.

    Tying Windows Home Server to SQL Server
    Brian Moran
    This week, I want to talk about the Windows Home Server announcements made during Microsoft Chairman Bill Gates' recent keynote speech at the Windows Hardware and Engineering Conference (WinHec) 2007. Those announcements might not seem like compelling news to the Microsoft SQL Server community at first glance, but I think they're interesting in several ways, especially in the long term.

    Cannot Generate SSPI Context
    Decipherinfosys
    This error is probably one of the most frustrating ones for the SQL Server database folks. MSFT has an excellent KB article that covers the details on how to fix this issue - KB 811889. It goes into the details of Kerberos and NTLM, registering and de-registering SPNs etc..

    Creative uses for COALESCE() in SQL Server
    Arthur Fuller
    COALESCE() accepts a series of values and a value to use in the event that all items in the list are null; then, it returns the first not-null value. This tip describes two creative uses of the COALESCE() function in SQL Server.

    SQL Server Auditing - Part 1
    Brian Kelley
    Our SQL Server Security expert, Brian Kelley, brings us the first part of a new series on auditing. Most of the auditing articles we've had are based on how you audit changes to data. Brian looks at auditing from the server itself, explaining the different levels of auditing built into SQL Server 2000.

    SQL Server 'Katmai' Lacks Anticipated WinFS Features
    Scott M. Fulton, III
    When last June, Microsoft decided to discontinue work on its radically redefined relational file system, then called WinFS, the team announced some of its work would be forked off and merged into the next version of SQL Server, code-named "Katmai." After Bill Gates had proclaimed WinFS in 2005 to be the game-changing component for his future vision of Windows Vista, developers were curious to find out how something that monumental would manage to move mountains as part of a database manager rather than an operating system.

    My notes from Microsoft BI Conference
    Vidas Matelis
    My notes from 2007 Microsoft Business Intelligence Conference:

    Counting 'in-flight' events in MDX
    Mosha Pasumansky
    Time dimension has special meaning in OLAP and DW. The classic problems involve looking at previous period, parallel period, computing moving averages and running sums. Today we will look into less common, but nevertheless interesting problem of 'in-flight' events. This scenario arises when there is more than one date/time attribute associated with the fact. For example, for the marketing campaign we can have creation date, start and end date for the campaign; for airplanes there is departure and arrival time; in Adventure Works for each order we track order creation date, order shipping date and order delivery date. Now, we can put role playing dimensions for Time, and include all of them in the cube. This allows slicing by any one of them and analysis such as - how many orders were created on particular date or date range, how many orders shipped on particular date or date range, how many orders were delivered on particular date or date range etc. We could also load into the cube interesting metrics such as how long did it take to between order shipped until it was delivered etc. But what this article is going to discuss is the following question: On any particular date or date range how many orders are in-delivery, i.e. they were already shipped but weren't delivered yet. We will use Adventure Works cube as an example. Let's start with the report where we want to see how many orders were in-delivery from May 5th 2003 to May 9th 2003. In order to find such orders, we need to look at the orders which had Ship date prior to May 9th, but Delivery date post May 5th. Both of these sets can be written using Range operator:

    Notes about Notes from Microsoft BI Conference
    Mosha Pasumansky
    I was reading the blog post "My notes from Microsoft BI Conference" by Vidas Matelis. It is a collection of notes recorded at different presentations, chalk talks etc. I felt that I agree with some of them, disagree with some, and have no opinion about some. I felt like it would be useful to write down my thoughts about these notes. Of course, when I don't agree with them - it doesn't mean that I am right - I am merely expressing my opinion on a matter, which is subjective. I also apologize upfront if any of my comments sound critical - my intent is not to critique, but to open a discussion, as an old saying goes "The truth is born in dispute". I will be citing the selected notes from Vidas's blog and then add my commentary.

    Microsoft Excel's Idea of Visual Data Analysis
    Stephen Few
    No software product is used more than Microsoft Excel for the analysis and presentation of quantitative data. While its use is prolific, and it does some things very well, its charting functionality is rather sad. The charts feature dazzling visual effects that are perhaps useful for marketing, but you can only use them to present data effectively with discouraging effort. Nevertheless, it is fair to say that you can use Excel to present data effectively, but within severe limits, and only if you're willing to work around its problems. To say it can be used for visual data analysis, however, is a stretch that exceeds its reach. To date, Excel is at best an infant in the world of visual data analysis, barely able to roll over.

    Scalable Memory Usage in SQLCLR
    Brad Richards
    There are few constraints on memory usage in SQLCLR modules. This freedom is one of the benefits of the CLR, however, care should be taken to implement code that integrates well into a scalable database environment. I want to discuss two points in this regard.

    XML Destination Script Component
    John Welch
    I often hear comments along the lines of "Why doesn't SSIS have an XML destination?". Unfortunately, I don't know the answer to that, but I can show you how to implement your own XML destination fairly easily. Thanks to the magic of the script component, it doesn't take much work at all. This was also a good opportunity for me to use a destination script component, as I haven't had much need for this in my work.

    Microsoft Talks Up SQL Server 'Katmai'
    Alex Woodie
    Microsoft started beating the drum for the version of SQL Server, codenamed "Katmai," last week at its business intelligence conference. In addition to new business intelligence capabilities, Katmai, which is scheduled to ship in 2008, will feature better security, more extensibility, new high availability features, a rule-based management framework, and an array of new tricks for .NET developers.

    Determining the last Update to or Select against a table (without a trigger!)
    Tony Rogerson
    SQL Server 2005 only, in the past we've had to use triggers to keep track of update activity but it has been impossible to determine when a table was last queried.

    The Ins and Outs of Offline Files
    Paul Randal
    First blog post of the year from TechEd! Well, Kimberly and I arrived a day early hoping to chill out in the sun by the pool but contrary to all expectations the weather sucks today - it's actually much better in Seattle. Instead we're hibernating in our room blogging and having a Blokus re-match - last time we were in Orlando in March she beat me soundly so I need to get my revenge :-)

    SQL Server's 'black-box' flight recorder
    Paul Randal
    So I learned something about SQL Server at TechEd today. In Kimberly and Bob Beauchemin's pre-con, Kimberly mentioned that SQL Server has a 'black-box' trace, similar to an aircraft flight-recorder, which I'd never heard of. It's an internal trace that has the last 5MB of various trace events and it's dumped to a file when SQL Server crashes. This can be really useful if you're troubleshooting an issue that causing SQL Server to crash or someone or something is telling SQL Server to shutdown and its unclear who or what is doing it

    Understand the problem before you try to find a solution
    Maoni S
    So far I've never written a blog entry that gives out philosophical advices on doing performance work. But lately I thought perhaps it's time to write such an entry because I've seen enough people who looked really hard at some performance counters (often not correct ones) or some other data and asked tons of questions such as "is this allocation rate too high? It looks too high to me." or "my gen1 size is too big, right? It seems big…", before they have enough evidence to even justify such an investigation and questions.

    SQL Server Katmai public CTP released!
    Darren Gosbell
    I got the following email from fellow MVP Greg Linwood on behalf of the Melbourne SQL Server User Group this morning which was taken from a posting by Ed Lehman from Microsoft in the private MVP newsgroup. I have not read any other feeds yet, but I imagine this news will be all over the web today. There will probably be a flood of information on Katmai, now that a release is publicly available.

    SSAS: Sending XMLA commands using AdomdClient
    Darren Gosbell
    There was a question on the forums a little while ago about what were the minimal libraries that would need to be installed in order to write a program that would allow someone to process a cube. Well it can be done with just the ADOMD.NET client libraries, which the user will need on their machine anyway if they are going to browse the cubes.

    Difference Between Perf Data Reported by Different Tools - 1
    Maoni
    So, there are many perf tools and some of them report either the same or the same type of data. I want to talk about various differences between the ones related to managed heap investigation. This is not supposed to cover everything..just the ones I think people use frequently.

    Difference Between Perf Data Reported by Different Tools - 2
    Maoni
    Managed Heap Size: We have both .NET CLR Memory perf counters and SoS extensions that report manged heap size related data.

    Difference Between Perf Data Reported by Different Tools - 3
    Maoni
    Both the !SOS.gchandles command (added in CLR 2.0) and the .NET CLR Memory\# GC Handles counter show you the number of GC handles you have in your process.

    Difference Between Perf Data Reported by Different Tools - 4
    Maoni
    .NET CLR Memory\% Time in GC counter and !runaway on thread(s) doing GC. The 2 common ways people use to look at the time spent in GC are the % Time in GC performance counter under .NET CLR Memory, and the CPU time displayed by the !runaway debugger command in cdb/windbg. What do they mean exactly? % Time in GC is calculated like this:

    64-bit vs 32-bit
    Maoni
    As 64-bit machines become more common, the problems we need to solve also evolve. In this post I'd like to talk about what it means for the GC and the applications' memory usage when we move from 32-bit to 64-bit.

    Back to the Basics: IDENTITY INSERT
    Decipherinfosys
    We have received e-mails from some of our readers asking for coverage of some fundamentals of SQL, T-SQL, PL/SQL and SQL/PL which are used in day to day life and they had also been kind enough to list out what they would like to see in the those posts. So, on that note, here is one that deals with the explicit inserts into tables that have identity property for one of the fields. As you know, the Identity property is typically used by database designers when they want to use a surrogate key for a table. This allows them to rely on the database engine to automatically increment the value without specifying a value for that Identity property. In the case of Oracle or DB2 LUW, one can use a Sequence and a before trigger to achieve the same effect. DB2 LUW also supports the Identity property so it has the best of both worlds. At times however, there is a need to explicitly insert a value for that Identity property column i.e. there is a need to over-rule the incremental value that is provided by the database engine. One such scenario might be when you are pulling data from one schema to the other and need to get exactly the same ID values across in order to honor the foreign keys in the system. The other can be when you are doing heterogeneous data migrations like migrating data from say Oracle to SQL Server or from Oracle to DB2. Another scenario could be when you are interfacing with another application and need to preserve the ID values sent by that system.

    Katmai: New T-SQL enhancements
    Jamie Thomson
    A very short post here showing some of the new T-SQL constructs in katmai. Check out the following code snippet:

    Katmai: T-SQL Grouping sets
    Jamie Thomson
    SQL Server 2005 includes the WITH CUBE and WITH ROLLUP syntaxes that are used to display summary information for combinations of columns in the GROUP BY clause. That's useful functionality but it didn't provide particularly fine-grained control over what summaries were returned. Essentially it was all-or-nothing.

    T-SQL: Remove collation statements using Regular Expressions
    Jamie Thomson
    I use datadude quite alot and recently I imported lots of tables into my datadude project but forget to configure it to not import the collation (more on how to configure that some other time). Hence, I had a huge collection of tables with unwanted collation statements in them.

    SQL Server 2008 Product Overview
    Michelle Dumler
    This white paper provides an overview of the new benefits and functionality available in SQL Server 2008. For organizations to be successful and thrive in today's world of data, they need a vision that addresses key data trends. The data platform vision of Microsoft helps organizations meet these data explosion needs and the next generation of data-driven applications. Microsoft will continue to invest in and evolve the following key areas to support their data platform vision: mission-critical enterprise data platform, dynamic development, relational data, and business intelligence. Read this paper to learn about the Microsoft Data Platform Vision and how SQL Server 2008 meets the needs of the next generation of data-driven applications.

    Vista and SQL Server 2005 Compact Edition
    Jeff Wharton
    Last night I spent quite some time trying to get SQL Server 2005 Compact Edition installed and replicating with SQL Server 2005 on my development Vista box; an experience which has left me lost for words. So that others don't have to go through the pain I did, I've put together a list of steps that need to be completed to get things up-and-running quickly. Steps 6-8 are optional but higly recommended as they'll make your development experience a whole lot easier and more enjoyable.

    Microsoft acquires Dundas's data visualization components, SQL 2008 news & download CTP3!
    Russell Christopher
    This morning @ TechEd, Microsoft announced that we've purchased Dundas's data visualization components.

    MDX Scripting Statements: Introducing the Simple CASE Statement
    William Pearson
    In this lesson, we will introduce a new addition to MDX with Analysis Services 2005, the CASE statement. Classed as an MDX scripting statement within the Microsoft MDX documentation, CASE can return values based upon multiple comparisons. There are two general types of CASE statements. The simple CASE statement (which returns specific values based upon its comparison of an expression to a set of simple expressions) is the subject of this article. We introduce the other type, the searched CASE statement (which returns specific values based upon its evaluation of a set of Boolean expressions) in another article of this series. In either of its general types, CASE is similar to the IIF() function, which we explored in String / Numeric Functions: Introducing the IIF() Function and in String / Numeric Functions: More on the IIF() Function (both members of the Database Journal MDX Essentials series), but can handle more conditions, as we shall see.

    Custom Administrative Reports - Part II
    Itay Braun
    The "Performance Dashboard" is a good example of custom administrative reports - reports you can use from the Management Studio to administer the SQL Server. Of course you can use other custom reports in the Management Studio. For ex. Simon Sabin wrote the SQL 2005 Management Studio version of the good old Enterprise Manager Task Pad (http://sqlblogcasts.com/blogs/simons/archive/2007/03/28/Update-to-the-taskpad-custom-report.aspx )

    Max Worker Threads Configuration in SQL Server 2005
    Itay Braun
    In 2005 the default value for this setting has changed from 255 (SQL2k) to 0 (dynamic in SQL2k5). According to various sources, the following table shows the automatically configured number of Max Worker Threads for SQL Servers (2005) with different numbers of CPUs when the SQL Server database engine is left to dynamically set this value:

    Microsoft has released Microsoft Core XML Services (MSXML) 6.0 Service Pack 1
    Itay Braun
    Microsoft has released Microsoft Core XML Services (MSXML) 6.0 Service Pack 1 (SP1). MSXML 6.0 SP1 is released as an optional update on the Microsoft Windows Update Web site. MSXML 6.0 SP1 improves reliability, security, and conformance with the XML 1.0 specification. MSXML 6.0 SP1 also improves compatibility with the System.Xml namespace in the Microsoft .NET Framework 2.0.

    Description of disaster recovery options for Microsoft SQL Server
    Microsoft
    This article discusses various solutions for recovering data from a Microsoft SQL Server database, if a disaster occurs. This article also discusses the advantages and the disadvantages of each solution.

    Description of the waittype and lastwaittype columns in the master.dbo.sysprocesses table in SQL Server 2000 and SQL Server 2005
    Microsoft
    The master.dbo.sysprocesses table in Microsoft SQL Server 2000 and SQL Server 2005 is a system table that contains information about the active server process IDs (SPIDs) that are running on SQL Server.

    SQL SERVER - Database Coding Standards and Guidelines - Part 1
    Pinal Dave
    SQL Server Database Coding Standards and Guidelines - Part 1

    Interview with an IT Professional - Rob Farley
    Debbie Timmins
    I am very pleased to be able to introduce Rob Farley, today's Interview with an IT Professional. Rob is a Microsoft Most Valued Professional (MVP) for SQL Server and runs the Australian SQL Server User Group in Adelaide. In the last year Rob has made several trips to the Microsoft headquarters in Redmond, United States to assist with the content released in many of the upcoming Microsoft certifications. Rob also works as a mentor/trainer for Solid Quality Learning and is on the ACS South Australian Branch Executive Committee. Rob is also very active in the blog community, and has his own blog.

    A Primer on Managing Data Bitemporally
    Adam Machanic
    Adapted from Expert SQL Server 2005 Development (Apress, 2007), Chapter 10, "Working with Temporal Data"

    Everybody Reports to Somebody
    Craig Hatley
    One of the very common questions posted about T-SQL is how to traverse a hierarchy in a set based manner. New author Craig Hatley brings us his techniques for handling the common scenario of employees and managers.

    Enforce Business Rules for All Your Data with Constraints
    Alexander Kuznetsov
    The only way to guarantee that your business rules are always enforced for all your data is by using constraints. Learn how to use them to enforce business rules in the database.

    Deploying Reports
    Raj Vasant
    Longtime SQL Server expert Raj Vasant takes a look at various ways in which you can deploy reports for Reporting Services 2005.

    SQL Server 2008 (Katmai) Cannot Be Installed On A PC With SQL Server 2000 On It
    Denis Gobo
    I tried installing the SQL Server 2008 - June CTP on one of my machines which had SQL Server 2000 installed; it does not let you do that. I guess this is the time to uninstall SQL Server 2000. That is just what I did.

    SQL Server 2008 Is RTM (According to SERVERPROPERTY('productlevel'))
    Denis Gobo
    Okay, this is the last Katmai post....for today.....I promise.....

    More about SQL Server 2008 June CTP
    Glenn Berry
    Since Microsoft has officially announced that SQL Server "Katmai" will be SQL Server 2008, and they have released the June CTP of SQL Server 2008. I can talk a little more about it without getting into trouble. Microsoft has a short white paper here, that covers some of the new features that will be in SQL Server 2008. Here are a few high points:

    MERGE Statement in SQL Server 2008
    Glenn Berry
    Here is a sample of a MERGE statement (copied from BOL):

    mutliple refential integrity
    Joe Celko
    SQL Apprentice Question: Suppose I want a column in my table to reference two other columns of other two tables (of course datatypes are same, and the other two columns are primary key in their respective relations). How can I enforce this using SQL?

    Find first available block that does not intersect a range
    Joe Celko
    SQL Apprentice Question: Given a number of numeric ranges, I need to find the first available row (range) that can accomodate a requested block of contiguous values. For example, given the following table definition:

    db table design question
    Joe Celko
    SQL Apprentice Question: We have an application which has its settings stored in a database (SQL Server 2000)

    [В начало]

    ФОРУМ SQL.RU

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

    Вышел русский SQL Server 2005!!!
    хитрая дата
    -=Сложный запрос =- (LIFO)
    и снова deadlock :-(
    Проблемка с групировкоы
    как изменить порядок столбцов в таблмце
    Предел оптимизации запроса
    Оптимизировать запрос с table-переменными
    Установка SQL Server 2000 Enterprise
    Вычислимые поля
    Тип данных text. В чем может быть проблема
    Временная таблица
    Условия if
    Не стартуют job backup
    Подсчет суммы промежутков времени
    лицензирование 2005
    Помогите плиз с запросом на добавление
    Помогите сделать оптимальную выборку
    Отрезать нулики. Существует ли вариант попроще?
    Неужели никто не сталкивался?

    [В начало]

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

    ShippedLog
    MS VS for BD Pro и CLR-разработка
    изменить collation на 2005 сервере
    Работа с bcp и двойными кавычками
    Экранирование кавычек в файл
    Запуск службы Microsoft Search не от LocalSystem
    SQL 2K MSDE Job Agent Tools
    Руссификатор для MSSQL 2005
    Что это за эвент Event ID 538
    Full-text search
    Получить список логинов SQL server через SQLDMO

    [В начало]

    КНИГИ

    Рефакторинг баз данных: эволюционное проектирование

    Скотт В. Эмблер, Прамодкумар Дж. Садаладж

    368 стр., с ил.; ISBN 978-5-8459-1157-5, 0-321-29353-3; формат 70x100/16; твердый переплет; 2007, 2 кв.; Вильямс.

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

    Оглавление

      Об авторах
      Введение
      Глава 1. Эволюционная разработка баз данных
      Глава 2. Операции рефакторинга базы данных
      Глава 3. Процесс рефакторинга базы данных
      Глава 4. Развертывание на производстве
      Глава 5. Операции рефакторинга базы данных
      Глава 6. Операции рефакторинга структуры
      Глава 7. Операции рефакторинга качества данных
      Глава 8. Операции рефакторинга ссылочной целостности
      Глава 9. Операции рефакторинга архитектуры
      Глава 10. Операции рефакторинга методов
      Глава 11. Преобразования
      Приложение А. Обозначения языка моделирования данных UML
      Приложение Б. Глоссарий
      Приложение В. Литература
      Приложение Г. Список операций рефакторинга и операций преобразования
      Приложение Д. Отзывы
      Предметный указатель

    Об авторах

    Скотт В. Эмблер -- консультант в области усовершенствования программных процессов (Software Process Improvement -- SPI), проживающий недалеко от Торонто. Скотт создал методологии AM (Agile Modeling) (www.agilemodeling.com), AD (Agile Data) (www.agiledata.org), EUP (Enterprise Unified Process) (www.enterpriseunifiedprocess. com) и AUP (Agile Unified Process) (www.ambysoft.com/unifiedprocess), а также возглавил работы по их усовершенствованию. Скотт - автор нескольких книг, в том числе Agile Modeling (John Wiley & Sons, 2002), Agile Database Techniques (John Wiley & Sons, 2003), The Object Primer 3rd Edition (Cambridge University Press, 2004), The Enterprise Unified Process (Prentice Hall, 2005) и The Elements of UML 2.0 Style (Cambridge University Press, 2005). Скотт работает в качестве редактора с правами публикации в коммерческом журнале Software Development (www.sdmagazine.com), участвует и выступает с программными речами на различных международных конференциях, включая Software Development, UML World, Object Expo, Java Expo и Application Development. Скотт закончил Университет Торонто, получив степень магистра информатики. В свободное время Скотт изучает стили каратэ -- годзюрю и кобудо.
    Прамодкумар Дж. Садаладже -- консультант компании ThoughtWorks, которая занимается разработкой и интеграцией приложений для предприятия. Прамод стал инициатором внедрения методов и процессов эволюционного проектирования и рефакторинга баз данных в 1999 году, работая над крупными приложением J2EE с использованием методологии экстремального программирования (Extreme Programming -- XP). С тех пор Пра- мод, принимая участие во многих проектах, неизменно применяет эти методы и процессы. Прамод охотно делится своми знаниями в области администрирования баз данных в эволюционных проектах, применения эволюционных процессов к базам данных и влияния эволюционных подходов на администрирование базы данных, и в письменном, и в устном виде, чтобы дать возможность всем желающим освоить эволюционные методы проектирования баз данных. Свое свободное время Прамод проводит с женой и дочерью, совершая прогулки и бегая трусцой.

    Введение

    За последние несколько лет в индустрии информационной технологии (ИТ) стремительно распространились эволюционные методологии разработки программного обеспечения, часто называемые адаптивными, такие как экстремальное программирование (Extreme Programming -- XP), метод Scrum, унифицированный процесс компании Rational (Rational Unified Process - RUP), адаптивный унифицированный процесс (Agile Unified Process -- AUP) и разработка на основе функций (Feature-Driven Development -- FDD). Чтобы было проще понять особенности этих методов, подчеркнем, что эволюционный метод по своему характеру является и итеративным, и инкрементным, а адаптив- ный подход является эволюционным и вместе с тем характеризуется высокой степенью взаимодействия участников разработки. Кроме того, в организациях, применяющих информационные технологии, все шире внедряются такие адаптивные методики, как ре- факторинг, программирование в паре, разработка на основе тестирования (Test-Driven Development -- TDD) и адаптивное проектирование на основе модели (Agile Model Driven Development - AMDD). Эти подходы и методики были разработаны и получили свое развитие в течение многих лет в среде рядовых разработчиков и доведены до совершенства обычными программистами, а не придуманы теоретиками, живущими в башнях из слоновой кости. Короче говоря, эти эволюционные и адаптивные методики, повидимому, невероятно успешно действуют на практике. В своей оригинальной книге Refactoring Мартин Фаулер дал определение рефакторинга как небольшого изменения в исходном коде, которое способствует улучшению проекта кода без изменения его семантики. Иными словами, рефакторинг - это улучшение качества сделанной вами работы без нарушения или добавления чего-либо. Кроме того, в своей книге Мартин обсуждает идею, что если возможно подвергнуть рефакторингу прикладной исходный код, то есть возможность подвергнуть рефакторингу схему базы данных. Но Мартин указал, что рефакторинг баз данных -- очень сложная задача, поскольку базы данных отличаются высокой степенью связности; поэтому он решил исключить эту тематику из своей книги. После публикации книги Refactoring в 1999 году оба автора настоящей книги стали искать способы проведения рефакторинга схем базы данных. Первоначально мы работали отдельно, встречаясь друг с другомна таких конференциях, как Software Development (www.sdexpo.com), и ведя переписку с помощью списков рассылки (например, www.agiledata.org/feedback.html). Мы обсуждали идеи, посещали лекции и презентации друг друга на конференциях и вскоре обнаружили, что наши идеи и методы пересекаются, а также являются весьма взаимосовместимыми. Поэтому мы объединили свои усилия в написании настоящей книги, чтобы поделиться своим опытом и рассказать о методах развития схем баз данных путем проведения операций рефакторинга. Все примеры, приведенные в книге, написаны на языке Java и на языках баз данных Oracle. Практически каждое описание операции рефакторинга базы данных включает код, предназначенный для модификации непосредственно самой схемы базы данных, а применительно к некоторым наиболее интересным операциям рефакторинга мы показали, какое влияние они могут оказать на прикладной код Java. Безусловно, нельзя найти две базы данных, которые были бы неотличимыми друг от друга, поэтому мы включили описания альтернативных стратегий реализации в тех случаях, когда между программными продуктами баз данных имеются тонкие, но важные различия. В некоторых случа- ях мы обсуждаем альтернативные реализации каких-то аспектов рефакторинга с помощью таких характерных для СУБД Oracle средств, как команды SET UNUSED или RENAME TO, а во многих приведенных нами примерах кода используются средства COMMENT ON, предусмотренное в СУБД Oracle. В других программных продуктах баз данных предусмотрены другие средства, позволяющие упростить рефакторинг баз данных, и хороший администратор базы данных должен знать, как воспользоваться этими особенностями в своих интересах. Но лучше всего, если в будущем появятся инструментальные средства рефакторинга баз данных, которые могли бы выполнять всю эту работу за нас. Кроме того, мы стремились показать настолько простой код Java, чтобы можно было преобразовать его в код C#, C++ или даже Visual Basic практически без затруднений.
    Необходимость в осуществлении эволюционной разработки баз данных Настало такое время, что эволюционные подходы к разработке баз данных должны выйти на передний план. Это означает, что схема базы данных не должна полностью проектироваться заранее еще до начала проекта; вместо этого схема наращивается на протяжении всего периода осуществления проекта, отражая изменения в требованиях, которые выдвигают лица, заинтересованные в разработке проекта. Нравится нам это или нет, но по мере развития проекта требования изменяются. В традиционных подходах принято отрицать эту фундаментальную истину и пытаться ''управлять изменениями''; термин управление изменениями, кроме прочих отрицательных оттенков, несет смысл -- создание препятствий для изменений. Вместо этого специалисты, непосредственно использующие современные методы разработки, решили принять потребность в изменениях как должное и взять на вооружение методы, позволяющие им совершенствовать плоды своего труда настолько оперативно, насколько это согласуется с расширяющимися требованиями. Программисты стали руководствоваться такими методами, как TDD, рефакторинг и AMDD, а также создали новые инструментальные средства разработки, что- бы упростить использование этих методов. Достигнув этой цели, специалисты в области программного обеспечения осознали, что нужны также методы и инструментальные средства для поддержки эволюционной разработки баз данных.
    Преимущества эволюционного подхода к разработке баз данных включают следующее.

    1. Минимизация бесполезных затрат. Эволюционный, своевременный (Just-In- Time - JIT) подход позволяет исключить издержки, которые неизбежно возникают при использовании последовательных методов в случае изменения требований. Все инвестиции, заблаговременно вложенные в подготовку детализированных требований, создание архитектуры и проектирование артефактов, становятся напрасно потерянными, если в дальнейшем обнаруживается, что требование, ради выполнения которого были сделаны эти затраты, больше не выдвигается. Ведь если ваша квалификация позволяет сделать работу заранее, то, очевидно, вы сможете воспользоваться своей квалификацией, чтобы сделать ту же работу, когда для этого настанет время.
    2. Предотвращение необходимости в существенных переделках. Как будет показано в главе 1 "Эволюционная разработка базы данных", все равно должно быть заранее проведено некоторое заблаговременное начальное проектирование, позволяющее продумать наперед основные проблемы и выяснить, какие сложности могли бы потенциально привести к существенным переработкам при их обнаружении на более поздних этапах проекта; не нужно лишь предварительно изучать мельчайшие подробности.
    3. Постоянная уверенность в наличии работоспособной системы. Эволюционный подход позволяет регулярно выпускать рабочее программное обеспечение (даже если его развертывание осуществляется только в демонстрационной среде), которое всегда может быть передано в эксплуатацию. Если в вашем распоряжении каждый раз через одну-две недели оказывается новая, работоспособная версия системы, риск неудачного завершения проекта резко уменьшается.
    4. Постоянная уверенность в том, что существующий на данный момент проект базы данных имеет наивысшее возможное качество. Именно в этом состоит вся суть подхода, основанного на проведении рефакторинга баз данных: усовершенствование проекта схемы на основе постепенно осуществляемых небольших изменений.
    5. Применение подхода к разработке, совместимого с подходом других разработчиков. Разработчики программного обеспечения руководствуются эволюционным подходом, и если специалисты в области обработки данных хотят стать равноправными членами современных групп разработчиков, они также должны выбрать для своей работы один из эволюционных методов.
    6. Сокращение общей трудоемкости. Применяя в своей производственной деятельности эволюционный подход, вы выполняете только ту работу, которая фактически нужна сегодня, и ни на йоту больше.
    Тем не менее при проведении разработки базы данных на основе эволюционных методов необходимо учитывать некоторые возникающие при этом сложности, которые описаны ниже.

    1. Наличие разных подходов у различных категорий разработчиков. Многие специалисты в области обработки данных предпочитают придерживаться последовательного подхода к разработке программного обеспечения и часто продолжают утверждать, что до начала программирования должны быть созданы в той или иной форме детализированные логические и физические модели данных, которые должны быть взяты за основу. После перехода к использованию современных методологий приходится отказываться от этого подхода, который теперь рассматривается как слишком неэффективный и рискованный; в связи с этим многие специалисты в области обработки данных чувствуют себя растерянными. Но хуже всего то, что многие "идейные руководители" в сообществе специалистов по базам данных - это люди, чье профессиональное становление произошло в 1970-х и 1980-х годах, но для них осталась незамеченной объектная революция, происшедшая в 1990-х годах, поэтому они не смогли своевременно приобрести опыт в эволюционных разработках. Мир изменился, но эта категория людей, по-видимому, не хочет изменяться вместе с ним. Как описано в данной книге, специалисты в области обработки данных не только имеют возможность организовать свою работу по-новому, на основе эволюционных или даже адаптивных методов, но и сами эти методы фактически являются предпочтительным способом организации работы.
    2. Низкая скорость обучения. Для изучения описанных в данной книге методов потребуется время, но еще больше времени займет полная перестройка сложившихся последовательных подходов и переход к использованию эволюционных подходов.
    3. Отсутствие полностью сложившихся инструментальных средств поддержки. Ко времени публикации книги Refactoring в 1999 году отсутствовали какие-либо инструментальные средства, поддерживающие эту методику. Но всего лишь через несколько лет в каждой отдельной интегрированной среде разработки (Integrated Development Environment - IDE) появились непосредственно встроенные функции рефакторинга кода. Ко времени написания этой книги также не существовали какие-либо инструментальные средства рефакторинга баз данных, но авторы фактически включили весь код, необходимый для реализации операций рефакторинга вручную. К счастью, в проспекте проектов Eclipse Data Tools Project (DTP) указано на необходимость разработки функциональных средств рефакторинга баз данных в составе интегрированной среды разработки Eclipse, поэтому остается лишь дождаться того, что поставщики инструмен- тальных средств подхватятэто начинание.

    Суть адаптивных методов

    Безусловно, данная книга не посвящена непосредственно адаптивной разработке программного обеспечения, но нельзя отрицать того факта, что основным методом для разработчиков, руководствующихся адаптивным подходом, должен стать рефакторинг баз данных. Процесс рассматривается как адаптивный, если он соответствует четырем критериям, разработанным организацией Agile Alliance (www.agilealliance.org). Эти критерии определяют предпочтения, а не альтернативы, побуждая стремление сосредоточиваться на определенных областях, но не исключать другие. Иными словами, если для вас представляют ценность одни сравниваемые концепции, то вы должны еще больше ценить другие концепции, рассматриваемые в сравнении. Например, нельзя отрицать важность процессов и инструментальных средств, но индивидуумы и способы взаимодействия между ними еще важнее. Четыре адаптивных критерия описаны ниже.

    1. Индивидуумы и способы их взаимодействия ВАЖНЕЕ процессов и инструментальных средств. Наиболее важными аспектами, требующими размышлений, является то, какие люди участвуют в разработках и как они взаимодействуют. (Если вам не удастся добиться успехов в этой сфере, то лучшие инструментальные средства и процессы окажутся бесполезными.)
    2. Работоспособное программное обеспечение ВАЖНЕЕ всеобъемлющей документа- ции. Основная цель разработки программного обеспечения состоит в создании работоспособного программного обеспечения, которое отвечает требованиям лиц, заинтересованных в появлении этого программного обеспечения. Сказанное не означает, что документация больше не нужна; документация, подготовленная должным образом, позволяет узнать, как и почему создана система, и определить, как работать с системой.
    3. Сотрудничество с клиентом ВАЖНЕЕ согласования контракта. Только клиент может сказать вам, чего он хочет. К сожалению, в этом клиенты не очень сильны; вероятнее всего, они не обладают квалификацией, позволяющей точно определить требования к системе, не излагают правильно эти требования с самого начала, а что хуже всего, со значительной вероятностью меняют свои взгляды по поводу будущей системы с течением времени. Безусловно, важно иметь контракт со своими клиентами, но контракт не может заменить эффективное взаимодействие. Преуспевающие специалисты в области информационной технологии тесно сотрудничают со своими клиентами, не жалеют усилий, чтобы узнать, что действительно требуется их клиентам, и вместе с тем постоянно проводят обучение своих клиентов.
    4. Своевременная реакция на изменения ВАЖНЕЕ выполнения плана. По мере осуществления разработки системы заинтересованные в этом лица начинают осознавать, что хотели бы внести изменения; обнаруживаются также изменения в деловой среде и в основополагающей технологии. В области разработки программного обеспечения изменчивость является повседневной реальностью, а это означает, что весь план проекта и общий подход могут быть эффективными лишь в том случае, если они будут отражать изменения в среде.

    Как читать эту книгу

    Основная часть книги, включая главы 6--11, состоит из справочного материала, в котором подробно описана каждая операция рефакторинга. В первых пяти главах изложены фундаментальные идеи и методы эволюционной разработки баз данных и, в частности, описаны принципы рефакторинга баз данных. Эти главы необходимо прочитать в следующем порядке.
    Глава 1 ''Эволюционная разработка баз данных'' содержит краткий обзор основных принципов эволюционной разработки и методов, которые обеспечивают такую разработку. В этой главе приведены краткие сведения о рефакторинге кода, рефакторинге баз данных, регрессионном тестировании баз данных, эволюционном моделировании данных на основе подхода AMDD, управлении конфигурациями информационных активов баз данных, а также обоснована необходимость в применении отдельных специализированных вариантов среды разработки.
    В главе 2 ''Рефакторинг баз данных'' подробно рассматриваются концепции, лежащие в основе рефакторинга баз данных, и показано, почему осуществление этой задачи может стать сложным на практике. В этой главе рассматривается также пример проведения рефакторинга базы данных как в простой среде с одним приложением, так и в сложной средес несколькими приложениями.
    Глава 3 ''Процесс рефакторинга баз данных'' содержит подробное описание этапов, требуемых для проведения рефакторинга схемы базы данных и в простом, и в сложном варианте среды. В случае базы данных с одним приложением обеспечивается гораздо больший контроль над средой, и в результате этого объем работы по проведению рефакторинга схемы намного уменьшается. В среде с несколькими приложениями необходимо предусмотреть переходный период, в течение которого в базе данных параллельно поддерживаются и старая, и новая схема, что позволяет группам разработчиков приложений обновлять и развертывать создаваемый ими код на производстве.
    В главе 4 ''Развертывание на производстве'' описан процесс, лежащий в основе развертывания операций рефакторинга баз данных на производстве. Такая задача может оказаться особенно затруднительной в среде с несколькими приложениями, поскольку в подобной среде приходится объединять и тестировать изменения, предлагаемые несколькими разными группами разработчиков.
    В главе 5 ''Стратегии рефакторинга баз данных'' подытожены некоторые из рекомендуемых методов, обнаруженных нами за многие годы, которые относятся к осуществлению рефакторинга схем базы данных. Кроме того, в этой главе изложено несколько идей, которые мы намереваемся опробовать, но еще не имели возможности этого сделать.

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

    Мы хотим поблагодарить указанных ниже людей за их вклад в создание настоящей книги: Дуга Барри (Doug Barry), Гэри Эванса (Gary Evans), Мартина Фаулера (Martin Fowler), Бернарда Гудвина (Bernard Goodwin), Свена Гортса (Sven Gorts), Дэвида Хея (David Hay), Мишель Хаусли (Michelle Housely), Пола Петралиа (Paul Petralia), Майкла Терстона (Michael Thurston) и Майкла Вайздоса (Michael Vizdos).
    Кроме того, Прамод хочет выразить свою признательность Срирам Нарайан (Sriram Narayan), Энди Слокаму (Andy Slocum), Ирфан Шаху (Irfan Shah), Нарайяну Раману (Narayan Raman), Анишеку Агарвалу (Anishek Agarwal) и другим своим товарищам по команде, которые постоянно оспаривали его мнение и научили многому, что касается разработки программного обеспечения. Я хочу поблагодарить также Мартина за то, что он научил меня писать, выступать и, в общем, посоветовал выйти за рамки своей деятельности в компании ThoughtWorks; Кента Бека (Kent Beck) за его поддержку; своихколлег из компании ThoughtWorks, которые во многом мне помогают и позволяют чувствовать себя на работе действительно комфортно; своих родителей Джинаппа и Шобху, которые приложили большие усилия по воспитанию меня и Правина, моего брата, и которые с раннего детства следили за тем, как я пишу, и стремились усовершенствовать мой стиль.

    Ждем Ваших отзывов!

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

    Email: info@williamspublishing.com
    WWW: http://www.williamspublishing.com
    Информация для писем:

    из России: 115419, Москва, а/я 783
    из Украины: 03150, Киев, а/я 152

    [В начало]

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