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

MS SQL Server

  Все выпуски  

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


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


#167<<  #168

СОДЕРЖАНИЕ

1.СОВЕТЫ
1.1.Что использовать, DataReader или DataSet?
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Новые и обновлённые технические статьи Microsoft
2.3.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа
4.ПОЛЕЗНОСТИ
4.1.SQL в примерах и задачах
4.2.Программирование алгоритмов обработки данных
4.3.Базы данных
4.4.Администрирование баз данных. Полное справочное руководство по методам и процедурам
4.5.Data Mining. Учебный курс (+CD ROM)

СОВЕТЫ

Что использовать, DataReader или DataSet?

По материалам статьи Jonathan Goodyear: Use DataReader or DataSet?
Перевод Максима Зубова

Я постоянно слышу один и тот же вопрос: "Что мне лучше использовать для моего ASP.NET веб - приложения, DataReader или DataSet?". Самое большое недоразумение, которое я когда-либо читал в статьях или новостных группах, состоит в том, что DataReader (имеется в виду SqlDataReader или OleDbDataReader) лучше, чем DataSet. Иногда я встречаю абсолютно противоположное утверждение. Суть в том, что Microsoft разработал оба этих класса для доступа к данным только потому, что оба они нужны. У каждого есть свои сильные и слабые стороны, и использование какого-либо одного из них должно определяться конкретной ситуацией.
Статья проливает свет на эту проблему, приводя несколько принципов, на основании которых можно сделать выбор, когда использовать DataReader, а когда DataSet в контексте разработки ASP.NET. При разработке клиентских Windows Forms приложений, эти правила могут быть изменены. Я предполагаю здесь, что вы достаточно знакомы с обоими этими классами.

Использование класса DataReader

Вот идеальные ситуации в которых вам следует использовать класс DataReader:

  • Данные, которые Вы запрашиваете должны всегда быть актуальными, и поэтому должны запрашиваться из БД каждый раз, как только Вам это необходимо. Класс DataReader создается быстрее, и производительность класса DataReader увеличивается быстрее по сравнению с классом DataSet при увеличивающейся загрузке (см. статьи Visual Studio Magazine в разделе Resources).
  • Вам просто нужна каждая строка данных. Наилучшим примером в этом случае может служить простое связывание класса DataReader с элементом управления веб, таким как DataGrid или DropDownList.
  • Вам нужно простое чтение XML данных из БД, только вперед. В этом случае вы можете использовать метод ExecuteXmlReader() объекта SQLCommand для доступа к классу XmlReader (XML аналог DataReader). Для этого необходимо использовать предложение FOR XML в запросе к SQL Server, или поле типа ntext, которое содержит корректный XML.
  • Вы планируете использовать несколько повторяющихся запросов для получения информации частями. Особенность, которая описана в первой ситуации, еще больше проявляется здесь.
  • Действительно, многие возможности, которые делают класс DataSet лучше, такие, как возможность устанавливать связи между таблицами, лучше оставить для клиентских Windows Forms приложений.

Использование класса DataSet

Вот когда вам следует рассмотреть возможность использования класса DataSet:

  • Вы создаете веб сервис, который использует данные, которые вы получаете как результат запроса. Из-за того, что класс DataReader осуществляет соединение с БД, они не могут быть преобразованы в XML и, следовательно, не могут быть переданы вызывающей стороне через веб - сервис.
  • Вам нужно использовать сортировку или фильтрацию данных. Прежде чем использовать объект DataView (со свойством DefaultView класса DataTable, содержащий класс DataSet) для сортировки и фильтрации данных, попробуйте сначала использовать специальные конструкции SQL запроса - такие как WHERE и ORDER BY - чтобы сохранить возможность использования более легкого и быстрого класса DataReader. Однако когда этим не обойдешься, или когда вам нужно использовать сортировку или фильтрацию данных несколько раз, то, конечно, следует использовать DataSet.
  • Вам необходимо перемещаться по данным, полученным в результате одного запроса несколько раз. Перемещаться по набору данных DataReader можно только один раз. Если, для примера, вам нужно связывать более одного серверного элемента управления с одними и теми же данными, то использование класса DataSet более предпочтительно. DataReader не может быть привязан к более чем одному серверному элементу управления, потому что он умеет перемещаться по своим данным только вперед. Вам придется запрашивать данные из БД второй раз, для того чтобы использовать DataReader в этом случае.
  • Вам нужно хранить данные, которые будут использоваться для последующих запросов страниц. Если данные принадлежат кому-то, кто их запросил, вы можете сохранить класс DataSet в переменной Session. Если к этим данным могут иметь доступ все, то вы можете сохранить их в переменной Application или в Cache (рекомендуется по причине того, что поддерживаются сроки хранения и обратные вызовы). По причине того, что класс DataReader поддерживает открытое соединение с БД, и хранит только одну строку данных в единицу времени, он не может использоваться в запросах различных страниц.
  • Вам приходится использовать сложные или требующие много времени функции для каждого элемента результирующего набора данных. Например, если вы получили список почтовых индексов и теперь хотите вызвать веб сервис для получения детальной информации по каждому индексу, лучше всего использовать DataSet. Все потому, что при использовании класса DataReader, соединение с БД не будет освобождено до тех пор, пока вы не уничтожите сам DataReader. Даже небольшая задержка на одной странице, при обработке тысяч таких страниц может повлечь за собой значительное увеличение трафика через доступные соединения. В отличие от этого, DataSet может получить сразу все данные и закрыть соединение с БД.
  • Вам требуется загрузить и обработать XML данные по двумерному принципу. Использование класса DataSet более предпочтительно для обработки XML, потому что вы можете использовать DataView для сортировки и фильтрации полученных данных таким же способом, как и при работе с обычным набором данных. Заметьте, однако, что в пространстве имен System.Xml реализовано множество классов, специально разработанных для обработки XML данных.
  • Вы работаете с источником данных, не относящимся к БД. Несмотря на то, что OleDbDataReader может использоваться для любого OLEDB провайдера (который может представлять или не представлять БД), объект DataSet может загружать данные напрямую из XML файлов и динамически интерпретировать их схему. DataSet также обладает возможностью записывать XML данные в поток или в файл.

Как вы можете видеть, класс DataSet имеет больше возможностей, чем DataReader, которые позволяют вам использовать DataSet гораздо шире. Это, однако, не означает то, что DataSet используется чаще. Многие задачи, которые вы решаете в своих ASP.NET приложениях вполне под силу DataReader.
И все-таки, класс DataSet несомненно играет очень важную роль в ASP.NET веб - приложениях. Вы можете уменьшить проблему потребности в ресурсах класса DataSet разумным использованием механизмов кэширования. Оба рассмотренных класса являются необходимыми составными частями успешного ASP.NET веб - приложения. Очень важно понимать и знать, когда лучше использовать один из них.

Resources

[В начало]

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

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

Различные виды начальных условий
Ицик Бен-Ган
MSSQLServer: Я уже представлял несколько задач, связанных с распознаванием рядов, имеющих определенные взаимосвязи с другими рядами. В реляционной алгебре задачи, рассмотренные мною, содержат реляционное деление. Используя общий сценарий (заказы-содержание заказов), я показал метод поиска как имеющихся заказов, содержащих одинаковые товары, так и нового заказа, вводимого в систему. В примерах этой статьи я снова использую эти сценарии...
Основы полнотекстового поиска
Ответы от Microsoft
MSSQLServer: Я создал полнотекстовый индекс в таблице и у меня есть несколько вопросов о возможностях компонента полнотекстового поиска в SQL Server. Во-первых, работает ли полнотекстовый поиск с суффиксами (т.е. можно ли по фразе *mation отыскать такое слово, как information)? Во-вторых, можно ли с помощью полнотекстового поиска находить слова, расположенные рядом друг с другом? Если да, то сколько слов максимально могут разделять искомые слова? В-третьих, как модифицировать список "словесного шума"?...
Рассылка сообщений из SQL Server
Брайан Моран
MSSQLServer: Вам не нужно устанавливать Outlook на сервере SQL, чтобы использовать возможности SQL Mail. Единственное, что требуется сделать для использования SQL Mail - это загрузить почтовый клиент Messaging API (MAPI) на сервере SQL. Другое дело, что Outlook - это самый естественный клиент для SQL Mail, но в общем случае может использоваться любой MAPI-клиент...
Расставляя вехи
Майкл Оти
MSSQLServer: SQL Server в прошлом году добился значительных успехов как в отношении производительности, так и по доле охвата рынка. В феврале SQL Server занял второе место по результатам теста TPC-C для некластеризованных систем, затем продолжил движение вверх и в апреле стал лидером по производительности среди некластеризованных систем. Спустя две недели UDB 8.1 от IBM потеснила SQL Server, но ненадолго: в мае Microsoft со своей 64-разрядной версией SQL Server 2000 вернула позиции с рекордом TPC-C для некластеризованных систем 707102 транзакции в минуту (tpmC)...
Новые возможности SP3a
Брайан Моран
MSSQLServer: К настоящему времени все пользователи SQL Server 2000 должны были установить на своих рабочих системах пакет исправлений Service Pack 3 (SP3) для защиты от червя Slammer и других опасностей. Но недавно компания Microsoft без лишнего шума выпустила пакет SP3a. Для решения каких проблем предназначен SP3a, и каким категориям пользователей следует применить пакет? На специализированной Web-странице Microsoft не указывается, какие новые функции реализованы в пакете, и следует ли применять SP3a пользователям, уже установившим SP3. Более ясные ответы на эти вопросы содержатся на загрузочном сайте SP3a...
Использование фильтров трассировки
Брайан Моран
MSSQLServer: Мне нужно создать трассу SQL Server Profiler для перехвата запросов к небольшому набору таблиц в своей базе данных. Для отдельно взятой таблицы это сделать удается, а для нескольких таблиц - нет. Почему?...
OLAP : больше чем цифры
Рас Уитни
OLAP: Многие, услышав об OLAP, полагают, что речь идет об анализе цифр - например, обработке финансовой информации или сведений о продажах. Тем не менее, множество решений OLAP находится за пределами обычных цифровых приложений. Некоторые из наиболее значимых аналитических решений не имеют отношения к числовой информации. Существует возможность исследовать любую базу данных - с числовыми данными или без них - используя подитоги. Итог может определить число деловых операций, таких как продажи, звонки в центр поддержки или неисправности в продукции. Анализ с помощью итогов может оказаться весьма полезным занятием, так как он может показать изменения в период времени или соотношения между числами (например, вычисление продаж в Европе, по сравнению с продажами в Соединенных Штата...
"Что в имени?"
Мишель Пуле
MSSQLServer: Как говорил один из героев Шекспира: "Что в имени? Ведь роза пахнет розой, хоть розой назови ее, хоть нет". Но то, что доступно людям - узнать другого человека, под каким бы именем он ни скрывался, - не в состоянии сделать SQL Server по отношению к своим объектам. В контексте базы данных, имя - это строка символов, которая идентифицирует объект, будь то таблица, столбец или хранимая процедура, - как для самой базы данных, так и для пользователя. Когда эта строка изменяется, с точки зрения базы данных, речь идет уже о другом объекте. И в контексте своей базы данных пользователи считают точно так же. Поэтому очень важно однажды определиться и в дальнейшем строго придерживаться соглашения об именах, принятого для базы данных...
Безопасность и параметризация
Рас Уитни
OLAP: Как повысить безопасность конфиденциальной информации с помощью MDX...
Перемещение баз данных SQL Server 7.0 на SQL Server 2000
Ответы от разработчиков Microsoft
MSSQLServer: Как переименовать каталог mssql7\data, не нарушая работы установленной версии SQL Server?...
EXISTS против COUNT(*)
Брайан Моран
MSSQLServer: Я работаю с SQL Server 2000, и мне нужно установить, существует ли в таблице определенное значение. Что лучше использовать - EXISTS или SELECT COUNT(*)?...
Трассировка работоспособности
Брайан Моран
MSSQLServer: Мне необходимо отслеживать период работоспособного состояния системы (uptime) для выполнения соглашения Service Level Agreement (SLA). Как установить, в течение какого времени работала отдельно взятая копия SQL Server?...
MSDE и SQL Server
Майкл Оти
MSSQLServer: Microsoft SQL Server Desktop Engine (MSDE) - это СУБД для использования на локальной станции. Она базируется на основе того же ядра, что и SQL Server. Разработка приложений для MSDE ничем не отличается от аналогичной разработки для SQL Server, и это подобие создает некоторую путаницу - особенно когда речь заходит о различии между MSDE и SQL Server 2000 Personal Edition. Ниже перечисляются семь основных отличий MSDE 2000 от SQL Server 2000...
От ADO к ADO.NET
Дино Эспозито
ADO: Существует много приложений, особенно Web- и n-уровневых, использующих ADO как средство взаимодействия с системами управления базами данных. ADO создавался для того, чтобы можно было обращаться к данным из приложения напрямую или по двухуровневой схеме. Со временем разработчики Microsoft расширили объектную модель ADO, в ответ на просьбы пользователей обеспечить поддержку работы приложений при отсутствии постоянной связи клиентского приложения и сервера, возможность разработки n-уровневой архитектуры программного обеспечения и интеграции с XML. Microsoft Framework .NET предлагает совсем новую объектную модель, заставляя разработчиков задуматься: портировать или не портировать? Менять свои приложения по частям или переписать все сразу? Хранить ли верность ADO или переход...
Управление репликациями и ActiveX
Джанин Халл Гейли
MSSQLServer: В наши дни, когда используются распределенные вычисления, получение достоверных данных и их сбор из филиалов предприятия определяет успех бизнеса. Сохранение данных синхронизирированными - непростая задача, особенно при низкоэффективной или при неправильно спроектированной сети. Ситуацию усложняет наличие мобильных пользователей. Например, пользователями могут быть покупатели, которые часто работают в режиме периодического подключения к сети и вносят в базу ряд необходимых изменений за один раз. SQL Server предоставляет гибкое репликационное решение, которое позволяет распределять данные между пользователями предприятия. Такие пользователи могут модифицировать и согласовывать по времени свои изменения между всеми серверами в цепочке распределенных серверов...
Перспективы data mining
Брайан Моран
MSSQLServer: Какие преимущества дают компаниям технологии поиска закономерностей - data mining? Я прочитал книги SQL Server Books Online (BOL), познакомился с несколькими демонстрационными продуктами и изучил некоторые Web-узлы, посвященные анализу информации, но мне никогда не приходилось строить законченное решение от начала до конца. Возможно, многие читатели разделяют мой энтузиазм в отношении поиска закономерностей, но не вполне твердо знают, что это такое и как пользоваться данной технологией...
Будущее SQL Server: лучше, быстрее, проще
Брайан Моран
MSSQLServer: Посещение таких мероприятий, как конференция SQL Server Magazine LIVE!, всегда дает обильную пищу для размышлений, и последняя конференция LIVE! не стала исключением. Главным открытием для меня стали долгосрочные перспективы использования хранимых процедур в грядущем мире Web-служб...
Внутренняя гармония базы данных
Мишель Пуле
SQL: Когда мне предложили написать статью о том, как нормализовать базу данных, я подумала, что сделать это будет нетрудно. Однако оказалось, что объяснить все, что я делаю, когда оцениваю базы данных, сложнее, чем я полагала. Многие шаги в процедурах автоматизированы — каким образом я могу описать их так, чтобы было понятно кому-нибудь еще?...
Фэн-шуй и проектирование базы данных
Морис Льюис
SQL: Согласно древней практике фэн-шуй, расстановка предметов в доме или офисе может либо перекрывать либо поддерживать поток энергии в человеке и вокруг него. Правильно движущийся поток энергии «ци» может повысить уровень жизненной энергии и сделать более гармоничным общее мироощущение. Препятствия на пути потока энергии или объекты, которые направляют эту энергию в неверном направлении, могут оказать отрицательное воздействие на окружающий человека мир. Подобным образом, после 20 лет программирования, создания и проектирования баз данных, я заметил, что данные тоже имеют собственную энергию «ци». Когда проектирование баз данных соответствует предъявляемым к ним требованиям, поток данных обрабатывается легко. Если при разработке базы данных пропущены важные компоненты, таки...
Делегирование прав через заимствование
Кевин Кристенсен
MSSQLServer: IT-специалисты должны обеспечивать максимально надежную защиту разрабатываемых ими систем, причем как от внешних, так и от внутренних опасностей. В частности, необходимо обеспечивать безопасность системы управления базами данных. Безопасность систем управления базами данных, таких как SQL Server, начинается с авторизации...
Преобразование XCL в XCLT и оператор context
Рич Ролман
ADO: Вопрос. Я всегда получаю сообщение об ошибке, когда преобразую таблицу стилей из старого формата Extensible Stylesheet Language в Extensible Stylesheet Language Transformations (XSLT). Стилевая таблица берет произвольный набор данных формата XML, формируемый методом Save из ADO, и строит HTML-таблицу (включая заголовки столбцов) с данными. Я пробовал задействовать оператор XSL context(), но XSLT не поддерживает его. Как я могу, не используя оператор context(), получить доступ к значениям данных из предыдущих выборок внутри стилевой таблицы? Еще у меня трудности с форматированием областей данных. Как я могу получить формат данных, заданных пользователем в XSLT?...
Группировка отрезков времени
Ицик Бен-Ган
MSSQLServer: Некоторые задачи в T-SQL, которые, казалось бы, должны выполняться посредством курсоров, могут быть решены с помощью наборов, что было показано ранее. Сейчас мы рассмотрим более сложный пример, в котором программисты обычно пробуют использовать курсор. Возможно, кому-либо уже приходилось сталкиваться с какой-то разновидностью этой задачи, потому что все они связаны с группировкой отрезков времени. Выразим благодарность Айзеку Бланку (Isaac Blank) за красивое решение, которое представлено в этой статье вместе с другими решениями...
Настройка агрегирования
Кэлен Дилани
MSSQLServer: Внутри SQL Server обрабатывает операторы GROUP BY и DISTINCT одинаково. Для обоих типов запросов SQL Server возвращает одну строку на выходе для каждого отдельного значения столбца или набора столбцов на входе. Различие состоит в том, что с оператором GROUP BY в запрос можно дополнительно включать функции агрегирования типа count (), sum() или в avg() для выполнения операции над всеми строками с одинаковыми значениями столбца группировки. Например, для таблицы Заказов (Orders) базы данных Northwind требуется узнать, какие клиенты разместили заказы. Другими словами, надо увидеть список не повторяющихся идентификаторов клиентов...
Методы обработки при «перекосе» данных
Дюзан Петкович, Кристиан Антерейтмейер
MSSQLServer: Столбцы в таблице обычно представляют собой описание сущностей из реальной жизни (сотрудники, названия товаров и т.д.). Когда запрос содержит предикат - оператор WHERE с условиями поиска по критерию, – который включает столбец, оптимизатор запросов SQL Server будет искать данные, отвечающие запросам, двумя путями: методом сканирования всей таблицы и путем поиска по индексу. В первом случае оптимизатор последовательно читает каждую строку и сравнивает ее с условием, написанным после WHERE. Обычно SQL Server сканирует всю таблицу полностью, если запрос предполагает выборку значительного количества строк. Во втором случае при выполнении запроса оптимизатор будет использовать индексы, если у этих столбцов они есть (кластеризованные или нет). Использовать ли индекс, зависит ...
Итеративный алгоритм для массивов данных
Рас Уитни
MSSQLServer: Каждому программисту баз данных понятно, что такое курсор. Если требуется выполнить сложную операцию с набором записей, применяется курсор, который обрабатывает каждую запись. Курсор похож на цикл или итерацию. В мире объектно-ориентированного программирования итерация обозначает действие по пошаговому перебору совокупности объектов...
Репликация Базы данных
Майкл Хотек
MSSQLServer: Несколько лет назад репликация базы данных была решением уровня high-end, которое могли позволить себе немногие предприятия. На сегодня уже гораздо больше организаций заинтересовано в репликации данных, главным образом, по двум причинам. Во-первых, бизнес становится все более географически распределенным, а все служащие нуждаются в доступе к единому источнику согласованных данных; и, во-вторых, многие компании работают с огромными наборами данных, которые они не могут быстро восстановить в случае отказа системы...
Измерение быстродействия работы алгоритмов
Джим Янг, Чжаохай Танг, Санай Сони
OLAP: Исследование данных - Data Mining - помогает пользователям выявить скрытые закономерности и найти полезную информацию в больших группах данных. Корпорации могут использовать эти закономерности и правила, чтобы усовершенствовать маркетинг, продажи, операции по поддержанию спроса посредством лучшего понимания клиентов. Обучающая модель является самой ресурсоемкой задачей в Data Mining. Бизнес-аналитикам приходится рассматривать миллионы ситуаций с сотнями свойств и состояний (значений), для того, чтобы найти закономерности, которые позволят успешно предсказать годовой доход или сегментацию спроса. При том есть возможность ускорить процесс обучения с помощью учебной модели Data Mining SQL Server 2000. На выставке, которая проходила в ноябре 2001 и называлась «Внедрение мет...
Передача журналов в SQL Server 2000, Часть 1
Рон Телмейж
MSSQLServer: В процессе передачи журналов (Log Shipping) журналы транзакций одной базы данных копируются и восстанавливаются на сервере, который находится в режиме ожидания. При этом устойчивость баз данных SQL Server увеличивается. Поскольку вторичный сервер получает все изменения первичной базы данных, он является точной копией оригинала – за исключением данных, пропавших при переключении нагрузки между серверами. В тот момент, когда первичный сервер окажется недоступным, можно воспользоваться вторичным, а когда первичный сервер станет доступен вновь, вторичный сервер можно перевести в режим ожидания...
Еще один способ индексации баз данных
Кэлен Дилани
MSSQLServer: Изучить физическую организацию индекса в SQL Server необходимо для того, чтобы понять, как выполняется настройка запросов. Хорошо проиндексированная таблица имеет много возможностей для настройки запросов в SQL Server. Если большая таблица, с десятками тысяч страниц или более, не имеет эффективного индекса, SQL Server в поисках одной строки должен будет просканировать всю таблицу, чтобы найти данные по запросу...
Автоматическое создание описаний для всех таблиц в базе данных
Йорг Бохмиш
MSSQLServer: Мне очень понравился совет Джо Бишопа о создании описателей таблиц (Generate a Table Description). Он предлагал примеры программного кода для документирования структуры таблиц SQL Server 6.5, включающей названия столбцов, типы данных, длину полей и возможность пустых значений...
Что такое LPC?
Брайан Моран
MSSQLServer: LPC - стандарт для локального вызова процедур (local procedure call); это сетевая библиотека, основанная на взаимодействии через механизм разделяемой памяти (shared-memory). Данную библиотеку SQL Server и его клиент используют для эффективной связи, когда оба процесса выполняются на одной машине. Замечательное руководство SQL Server Books Online (BOL), к сожалению, не содержит какой-либо информации по LPC. Соединяясь с SQL Server через локального клиента, по умолчанию, вы получите LPC-соединение, если только не зададите клиентский псевдоним (client alias), который определит конкретную сетевую библиотеку. Когда у вас есть соединение LPC, столбец net_library в таблице master..sysprocesses для сеанса будет иметь значение LPC....
Перенос паролей пользователей между различными версиями сервера SQL
Ричард Веймайер
MSSQLServer: Необходимо вручную экспортировать и затем импортировать пароли. Хотя синтаксис хранимой процедуры sp_password подразумевает возможность передачи зашифрованных паролей, в разных версиях сервера используются различные алгоритмы шифрования. Так что данный метод годится только для переноса паролей между одинаковыми версиями сервера SQL. Эта проблема не возникнет, если пользоваться интегрированной системой безопасности операционной системы...
Объяснение Роста Журнала Транзакций
Ричард Веймайер
MSSQLServer: Чтобы избежать такого роста журнала при операциях вставки, выполняйте вставки небольшими транзакциями, основанными на упорядоченном ключе. Кроме того, для уменьшения размера файла журнала можно выполнить один из сценариев по сокращению пространства журнала (shrink log space) (то есть DBCC SHRINKFILE и DBCC SHRINKDATABASE), которые доступны на Web-сайте Microsoft Developer Network (MSDN) по адресу http://msdn.microsoft.com...
Запуск триггера для каждой вставленной строки невозможен
Команда разработчиков MS SQL Server
MSSQLServer: Триггеры SQL Server выполняются для всей инструкции, а не для каждой обрабатываемой строки. Поэтому вам придется самостоятельно написать обработку множества строк в триггере. ...
Могут ли два связанных сервера выполнять запрос одновременно?
Брайан Моран
MSSQLServer: К сожалению, текущая версия распределенных представлений в SQL Server 2000 Enterprise Edition не выполняет распределенные запросы параллельно. Каждая часть объединения в предложении SELECT выполняется последовательно. Некоторые особенности распределенных представлений описаны плохо и могут негативно повлиять на производительность...
Выполнение пакета DTS из хранимой процедуры
Брайан Моран
MSSQLServer: К сожалению, ни одна команда T-SQL не позволяет выполнять DTS пакет, так что вам придется пройти несколько итераций, чтобы решить проблему. Вы можете выбирать из трех возможных решений....
Использование bcp для копирования результирующего набора в файл
Брайан Моран
MSSQLServer: Тонкость состоит в применении параметра QUERYOUT вместо обычного OUT, которое используется при ссылке на таблицу или представление. Чтобы избежать ошибок, имейте в виду две вещи. Во-первых, если процедура возвращает несколько результирующих наборов, использование QUERYOUT позволяет скопировать в файл данных только первый из них. Во вторых, утилита bcp чувствительна к использованию кавычек...
Выставка ошибок
Брайан Моран
MSSQLServer: Я решил составить полный список самых грубых ошибок ("worst practices"), возникающих при работе с пакетом SQL Server. Право же, насколько легче нам было бы жить, если бы мы научились избегать самых заурядных ошибок, которые совершаем изо дня в день...
Отвечает Брайан Моран
Брайан Моран
MSSQLServer: Когда Вы используете SQL Server Enterprise Manager в Microsoft SQL Server 2000 для создания таблицы, в нижней части экрана перечисляются некоторые свойства выбранного столбца: описание (Description), значение по умолчанию (Default Value), точность (Precision), масштаб (Scale), столбец-счетчик (Identity), начальное значение счетчика (Identity Seed), шаг приращения (Identity Increment), является глобальным идентификатором (Is RowGuid), формула (Formula) и сопоставление (Collation). Как можно использовать оператор Select или функцию, чтобы возвратить свойство «Описание» для определенного столбца?...
Масштабируемость аналитических систем. Часть 2
АЛЕКСЕЙ ШУЛЕНИН
OLAP: Под процессингом куба имеется в виду расчет агрегатов и наполнение структуры куба агрегатами и детальными данными. Как мы уже знаем, в случае ROLAP агрегаты будут храниться в таблицах или представлениях реляционного источника. В случае HOLAP или MOLAP агрегаты помещаются в специальную многомерную структуру. Перенос в многомерную структуру детальных данных происходит только в том случае, если выбран формат хранения MOLAP, что несколько увеличивает время процессинга, но впоследствии позволяет повысить скорость обработки аналитических запросов. Процессинг добавляет в куб изменения, произошедшие в транзакционных источниках. Процессинг выполняется в определенные моменты времени по команде администратора либо по расписанию. Задача процессинга входит в список стандартных задан...
ADO.Net, C#, SQL Server и здоровый пессимизм
Ильдар Даутов
ADO: Когда множество приложений и процессов пытаются одновременно модифицировать информацию в таблицах базы данных, необходимо использовать механизм контроля, способный разрешать конфликты и изолировать друг от друга конкурирующие запросы. Такой механизм в Microsoft SQL Server называется concurrency control – управление одновременным согласованным доступом. Существует две модели управления одновременным доступом пользователей к данным – пессимистическая и оптимистическая....
Масштабируемость аналитических систем
АЛЕКСЕЙ ШУЛЕНИН
OLAP: Не секрет, что, несмотря на развитие тенденций, обуславливающих внедрение аналитических систем в российском бизнесе, многие IT-менеджеры до сих пор не имеют четкого представления о возможностях и назначении технологии OLAP (on-line analytical processing). Очень часто под бизнес-анализом понимают всего лишь статистическую обработку данных в табличных редакторах, и именно здесь, по-видимому, следует искать причины восприятия аналитических приложений как «игры с веревочкой» и сомнений относительно их масштабируемости до уровня предприятия. Действительно, если говорить о стандартной двухуровневой клиент-серверной модели, то возложение функций анализа на клиента вынуждает нас мириться с потерей корпоративной целостности данных и небольшими объемами анализируемой информации...
Настройка характеристик показа данных
Рас Уитни
OLAP: Выделение исключений или условное форматирование позволяет применять для показа разных элементов результатов выполнения запроса различные характеристики ячеек. К примеру, при выводе сведений о прибыльности товаров можно особо выделить те члены, у которых прибыльность отрицательна (то есть убыточные товары). Выделение исключений позволяет привлечь внимание к важным цифрам и в печатном отчете, если набрать их жирным шрифтом или каким-либо заданным цветом. Не менее важно выделять исключения и при работе интерактивных аналитических приложений в реальном времени. Данная статья посвящена возможностям, которые предоставляют ячейки в SQL Server 2000 Analysis Services. Это мощное средство, позволяющее выделять исключения в аналитических приложениях...

[В начало]

Новые и обновлённые технические статьи Microsoft

A Complex Query Is Not Successful on a Server That Has More Than 2 GB of Memory
A Floating Point Exception Occurs During the Optimization of a Query
A Query That Uses a View That Contains a Correlated Subquery and an Aggregate Runs Slowly
A Remote Stored Procedure Returns Only Partial Results After the RAISERROR Statement
BUG: "Unable to Connect" Msg May Occur in Application Event Log
BUG: Alternate Pipe Not Recognized in Unattended Installation
BUG: Analysis Services Performance Counters Disappear after You Install Service Pack 2
BUG: BOL Incorrectly States That SQL Server Doesn't Support TOP Queries
BUG: Cannot Delete OLAP Service Directory After Removing OLAP Services
BUG: Comments in Views Removed When Using View Designer
BUG: Creating a View in Enterprise Manager Using a Domain Account May Fail
BUG: DTS Import/Export Wizard or TransferObjectsTask Fails to Maintain Filegroup Settings for Transferred Objects
BUG: Error "Invalid Object Name" on Linked Server Table Through OLEDB
BUG: LIKE with ESCAPE May Result in Different Query Access Plan
BUG: SP_Depends Does Not List Triggers
BUG: SQLOLEDB Treats AutoTranslate, UseProcForPrepare and WSID as Read-Only
HOW TO: Backup the Last Transaction Log When the Master and the Database Files Are Damaged
HOW TO: Create a Data Transformation Services Custom Task by Using Visual C# .NET
HOW TO: Handle Data Transformation Services Package Events in Visual C# .NET
HOW TO: Handle Errors in Data Transformation Services "Package" and "Step" Objects
HOW TO: Increase the Number of SQL Server Error Logs
HOW TO: List Database Properties Settings
HOW TO: Resolve "The Maximum Connection Limit Has Been Reached" Error Message
HOW TO: Return Multiple Columns in a DTS Lookup Query
HOW TO: Schedule a Package with Visual C++ in SQL Server 2000
HOW TO: Set Up and Troubleshoot a Linked Server to Oracle in SQL Server
HOW TO: Use the SQL Server CE Connectivity Management Utility
HOWTO: Create an Application Role on Microsoft SQL Server 7.0
HOWTO: Put Stored Procedures Under Source Control in Visual InterDev
INF: Advantages of Using Numeric Dimension Keys
INF: Changing Configuration Values When SQL Server Won't Start
INF: Data Transformation Services and Logged Loads
INF: Database Creation and Backup Operations Use Parallelism
INF: dbnextrow Does Not Return Fail on Deadlock
INF: Distribution of SQL-DMO (Distributed Database Objects)
INF: Err Msg "Cannot Obtain Server's Start Directory From Registry"
INF: Getting Started with Microsoft SQL Server 6.x Replication
INF: How to Bulk Copy Out All the Tables in a Database
INF: Importing Performance Monitor Logs into SQL Server
INF: Multiple Named Pipes Connections May Cause Error 17832
INF: Readme.txt for SQL Server 7.0 Service Pack 3
INF: SET STATISTICS and the Microsoft SQL Server ODBC Driver
INF: SQL Server 7.0 Service Pack 1 Fixlist
INF: TCP Ports Used by OLAP Services when Connecting Through a Firewall
INF: Tracing SQL Generated by MS SQL Server ODBC Driver
INF: Transaction Log Still Full After DUMP TRAN WITH NO_LOG
INF: Tunable Lock Escalation in SQL Server 6.0 and 6.5
INF: Understanding How the Transact-SQL KILL Command Works
INF: Using the WITH MOVE Option with the RESTORE Statement
INFO: Handling Deadlock Conditions
INFO: MSDE Security and Authentication
INFO: SQL Server and Windows NT Thread Scheduling
INFO: When and How to Use dbcancel() or sqlcancel()
MDX Query Results May Not Be Correct If Dimension Security Is Defined on a Dimension
New Connection Events Are Not Recorded in SQL Server Traces
PRB: "Unhandled Token Type" Error Message When You Run a Transact-SQL Statement That Contains a COMPUTE Clause
PRB: Attach/Detach Menu Commands Unavailable Against SQL Server 7.0
PRB: BobMgr::GetBuf() Errors May Be Registered in the SQL Server Error Log
PRB: Constraint Violation Is Not Detected If Update with the Same Data
PRB: Distributed Query With Jet Changes Native Column Order
PRB: Division by Zero Displays Results in Strange Format
PRB: Error -2147217900 When You Run Distributed Queries in SQL from MTS
PRB: Error in SQL Server 7.0 When You Call Command.Prepare Before You Add Parameters Using Visual Basic .NET
PRB: Error Message: "Exception Access Violation 2147221499.Need to run the object to perform this operation" Occurs When You Run a DTS Package in Microsoft Visual Basic Code
PRB: Error Message:"Bind Failed" Occurs After IP Address Changes on a Cluster
PRB: LRU List Empty Errors Can Make the Server Stop Responding
PRB: Owner of a Table Cannot Access It Directly If Made Sysadmin After Creation
PRB: Sp_addlinkedserver Does Not Validate the OLE DB Provider
PRB: SQL Server 7.0 Acmsetup.exe Setup Application Fails
PRB: SQL Server Service Did Not Start Due to a Logon Failure
PRB: Use BUILTIN\Group to Grant Access to Predefined Windows NT Groups
PRB: Using OLAP to Access a DBC Gives Error Message "Cannot Open File"
Resolve Corrupted Notification Services Performance Counters
SMS: "Table Corrupt" When Running DBCC Checkcatalog Against SMS Database
Some Complex Queries Run Slower After You Apply SQL Server SP4
SQL Server 2000 Performance Counters Do Not Appear in the Performance Collection Rules of the SQL Server Management Pack
Visual Basic Raises a Syntax Error When You Try to Compile a File That Was Created When You Saved a DTS Package
You Cannot Install SQL Server 2000 SP3 on the Korean Version of SQL Server 2000

[В начало]

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

Introducing Microsoft SQL Server "Yukon"
Next-Generation Information Management. Organizations today are facing several unique data challenges: the proliferation of data and systems across their enterprise; the need to provide employees, customers, and partners with consistent access to that data; the desire to better equip information workers with meaningful information to drive informed decisions; and the mandate to control costs without sacrificing application availability, security, or reliability
An Overview of SQL Server Yukon for the DBA
Eric Brown
The next version of Microsoft SQL Server code named "Yukon" provides the Windows Server System with a database platform for the next generation of connected, scalable and reliable enterprise applications. The breadth and depth of innovation is in response to the needs of many customers. After reading this paper, database administrators will have an understanding of the new features and capabilities found in SQL Server Yukon. From many enhancements to existing features to an entirely new security model, database administration is now more productive and in tune to the needs of the administrator
A Practical Guide to SQL Server Yukon Beta 1 DTS
Trey Johnson and Mark Chaffin
To understand the new features in "Yukon" Data Transformation Services (DTS), one must in many ways take a step back from the knowledge of prior DTS releases and come to the product with a fresh perspective. It is not that the new release is entirely different than its predecessors, but the similarities are at best on a functional level (a recurring theme in this whitepaper). In order for "Yukon" DTS to become an enterprise grade ETL tool, much of its architecture underwent change. Critical elements were rethought and the design appears to have taken on a few very notable characteristics
Introduction to SQL Server Yukon Relational Engine Security Features
Security is a sensitive topic that affects the work of all Microsoft SQL Server administrators and developers. One of the primary objectives for Microsoft SQL Server “Yukon” is to redefine the server’s security framework, using a model of a simple set of rules that can be explained clearly without a long list of exceptions. This whitepaper will address changes to SQL Server “Yukon” that implement this new security model
Overview of Business Intelligence and Data Warehousing in SQL Server Yukon
Joy Mundy
Microsoft SQL Server “Yukon” is a complete business intelligence (BI) platform that provides the features, tools, and functionality to build both classic and innovative kinds of analytical applications. This paper provides an introduction to the tools that you will use to build an analytical application, and highlights new functionality that makes it easier than ever to build and manage complex BI systems
Reporting Services Deployment Guide
SQL Server Reporting Services extends the Microsoft Business Intelligence (BI) vision by providing a comprehensive, server-based reporting platform. Reporting Services combines the speed, scalability and manageability of centrally-managed reporting with the flexibility and ‘on-demand’ nature of desktop and web-based applications. This deployment guide provides an overview of the solution, discusses installation and deployment issues, and outlines the basic operation of Reporting Services
Microsoft SQL Server 2000 Reporting Services Extends Business Intelligence Across the Enterprise
"SQL Server Reporting Services extends Microsoft's business intelligence platform by making more real-time information available to more employees in an organization," says Brian Biglin, product manager for SQL Server Business Intelligence at Microsoft. "Employees can subscribe to personalized reports that help them get the information they need to make fast, more accurate decisions. With this technology, Microsoft is helping organizations be more agile and responsive."
Design A Database Using an Entity-Relationship Diagram
Ramesh Gummadi
Database developers involved in the task of designing a database have to translate real world data into relational data, i.e. data organized in the form of tables. First they have to understand the data, then represent it in a design view and then translate into a RDBMS. One of the techniques that is great to use is the E-R diagram. Most of the developers who are involved in data base systems might already be familiar with it or atleast heard about it. I am going to try to briefly explain the concept and give an example to understand it
Introducing the SQL Server 'MDX in Analysis Services' Series
William Pearson
This is the first tutorial of a new series, MDX in Analysis Services, that I hope will help new users get up to speed quickly with multidimensional expressions (MDX). The series is designed to provide hands-on application of the fundamentals of MDX from the perspective of MS SQL Server 2000 Analysis Services (to which I will refer in most cases as simply "Analysis Services" to save time and space). Our primary focus will be the creation of MDX expressions based upon single and multiple values, the objective of which will be to create queries for use with multidimensional data sources. Each installment in the series will progressively add more features, allowing us to create and apply MDX queries in a variety of scenarios designed to meet specific real-world needs
MDX in Analysis Services: Intermediate Concepts - Part 1
William Pearson
In the first lesson of our series, we set out to develop a broad understanding of the rudiments of multidimensional expressions by exposing fundamental concepts and terms. We explored basic MDX syntax, introducing the use of the language to return information from multidimensional data sources. We created a calculated member, and then used it as a vehicle from which to navigate the structure of our cube, through the use of MDX expressions. Using illustrated examples, we explored ways to return information about members and practiced using basic conversion functions. Finally, we explored putting simple conditional tests and comparisons to work in our expressions
MDX in Analysis Services: Calculated Members: Further Considerations and Perspectives
William Pearson
In our last tutorial, Calculated Members: Introduction, we saw through practice that we can easily create and display calculated members within our queries to meet various business needs. We discussed the two main ways of handling the creation of calculated members within MDX, focusing on the use of the WITH operator to create a dynamic calculated member in an MDX query. Then, we practiced the creation of a straightforward calculated member, deriving a useful value from existing measures, and formatting the new calculated measure to meet an illustrated objective
SQL Server 2000 DTS Part 2 - Creating DTS Packages using Wizards
Marcin Policht
As we explained in the first article of this series, there are three methods of creating DTS packages - with DTS Designer graphical interface, with programming by directly using the DTS object model, or with wizards available from the SQL Server Enterprise Manager interface. We will focus here on the third method, which despite being the most limited, is very straightforward and will serve as an introduction to the remaining two, more sophisticated methods. Enterprise Manager offers two types of wizards providing a quick and friendly way of creating DTS packages: DTS Export/Import Wizard and Copy Database Wizard
SQL Server Bulk Copy Optimization Tips
Alexander Chigrik
If you're having trouble with bulk copy, check out these 14 tips from Alexander Chigrik
Some Very Early Information About ASP.NET 2.0
John Peterson
I realize that most of you are too busy to bother trying to keep up with all the news and rumors that circulate in the ASP and .NET communities... that's why you come to us! The latest rumblings from the underground are about the next version of ASP.NET which is being called ASP.NET 2.0 (code-named Whidbey)
SQL Server Security: Server Roles
Brian Kelley
In order to ease administration, starting with SQL Server 7.0, Microsoft developed several pre-defined fixed server roles. These roles have different permissions and are intended to provide the ability to spread the administrative responsibilities without having to give out complete control. DBAs can use these fixed server roles to assign different administrative tasks to personnel and give them only the rights they absolutely need. The server roles available in SQL Server 2000 are
Creating Container-managed Entity Beans with JBoss
Thornton Rose
Entity JavaBeans that use container-managed persistence (CMP) are convenient, because they require so little custom code to achieve automatic persistence. But that convenience carries a price: beans using CMP are also ferociously complex to configure, and often difficult to debug. In this article, you will see how to create, configure, and deploy entity beans that use CMP and JBoss
Export a Table to a Date Stamped File Name in SQL Server
MAK Muthusamy Anantha Kumar
Date stamping is a very common requirement in the IT industry for any data extract created. Through the DTS package with ActiveX script, it is very easy to date stamp a file. In this article, I am going to walk you through how to export a table to a date stamped file
SQL Server CE RDA replication configuration
Derek Mitchell
I have been meaning to add some more SQL Server for CE content for a while but my development PC has had the latest CE ver 1.1 loaded. This presented a problem since I wanted to do the tutorial with ver 1.0 as that is what most of you are running
Find the size of every database
Madhusudan Naidu Gundapaneni
You can find out how much space a database is occupying on the hard disk by using the sp_spaceused function. However, if you want to find all database sizes at once, you have to use sp_spaceused for all databases. It takes some time to write all those T-SQL statments. This handy script will find the size of every database in SQL Server 2000 without using the sp_spaceused function. It will save you time as well as the server's time
Problem-solving blocking situations
Robert Hauck
This procedure is intended to help with problem-solving blocking situations on the server. I developed it to contact users when their client software holds locks that are holding up other users. This works faster than viewing the blocking status through Enterprise Manager. It has been tested on SQL Server 2000
Overview of 64bit SQL
Ram Kishore
Microsoft® SQL Server™ 2000 Enterprise Edition (64-bit) provides full native support for the 64-bit version of the Microsoft Windows® operating system running on Intel Itanium Processors. This version of SQL Server 2000 provides many of the features of the 32-bit version, as well as providing support for 64-bit hardware. The 64-bit versions of Windows SQL Server 2000 and SQL Server 2000 Enterprise Edition combine to form a massive datacenter power plant capable of tackling today's most demanding database needs as well as future industry trends. It supports four languages: English, German, Japanese, and French
SQL Server Optimization Tips for Designing Tables
Alexander Chigrik
Normalize your tables to the third normal form. Consider the denormalization of your tables from the forth or fifth normal forms to the third normal form. Consider horizontal partitioning of the very large tables into the current and the archives versions...
What admins need to consider in advance of Yukon
Margie Semilof
DALLAS -- At the TechEd conference earlier this month, IT executives picked up a few details about Microsoft's database strategy. First, the company said it would add reporting services for SQL Server 2000; they will appear sometime later this year. And, second, officials said that Microsoft's next-generation database, code-named Yukon, will ship six months later than originally planned. It's now due out in late 2004, and it's probably going to be a few years beyond that before most IT shops consider installing the software. Nonetheless, Stan Sorenson, director of SQL Server product management, offered a few tips for customers interested in knowing how to prepare for Yukon

[В начало]

ФОРУМ SQL.RU

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

Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
Перезагрузка сервера, чем вызвана...
база Diasoft 5NT
Копирование строк
Зависание транзакции....
Ассинхронно запустить одну процедуру из другой на сервере?
Задачка для гуру
Проблемы с merge репликацией
Клевая примочка
Обновление параметров step-а job-а
Является ли MSSQL объектно ориентированной СУБД
Properties & Builder
openxml
PRB: Репликация - подписчик на диалап
Отмена каскадного удаления???
Права программера на SQL SERVER
Как в case с null работать
Помогите с запросом!!!
поругайте job backup
BDE через ODBC

[В начало]

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

Проверка на существование переменной. HELP!!!
кол-во пользователей в 1С
Вдогонку
Как засунуть выход READTEXT в переменную в ХП?
error 195 ( продолжение )
выборка элементов из нескольких таблиц
Серийные письма в word 2k из mssql 2k
XP клиент - 2000 server
SQL7 и descriptions полей
Как просматривать интербейзовскую базу?
Что происходит в репликации?
Агент не может delivery snapshot to the subscriber..
Помогите!!!
1с+скл иногда начинает дико тормозить
что быстрее?
Какие еще есть программы-менеджеры по MS SQL Server ?
откат изменений на несколько дней назад

[В начало]

ПОЛЕЗНОСТИ

SQL в примерах и задачах

И. Ф. Астахова, А. П. Толстобров, В. М. Мельников
176 стр. 2002
Издательство: Новое знание

Изложены основные понятия и способы применения SQL - популярного языка запросов к реляционным базам данных. Описаны приемы манипулирования данными и формирования запросов различной степени сложности. Каждая глава пособия сопровождается упражнениями, ... (more comming soon)

Книгу можно приобрести в следующих магазинах: Озон: 51,00руб. Купить

[В начало]

Программирование алгоритмов обработки данных

Авторы: Ускова О.Ф. и др.
ISBN: 5-94157-391-Х
Год издания: 2003, страниц: 188
Издательство: "БХВ-Петербург"

Учебное пособие для тех, кто уже приобрел начальные навыки программирования. В качестве базового используется язык Turbo Pascal. Объясняются понятия модульного и объектно-ориентированного программирования, дастся представление о различных видах программ, в т. ч. рекурсивных, с возвратами. Рассматривается большое количество алгоритмов сортировки, таких как внутренние - методом подсчета, вставками, методом Шелла, быстрая, методом "пузырька", выбором и пр., и внешние - с помощью слияния, многофазная, каскадная. Приводятся также алгоритмы доступа к данным и выполняется их анализ. Введенные понятия иллюстрируются на примерах программ. Книга содержит большое количество задач и упражнений для самостоятельной работы. Для поограммистов

Книгу можно приобрести в следующих магазинах: Colibri: 120,00руб. Купить

[В начало]

Базы данных

О. Л. Голицына, Н. В. Максимов, И. И. Попов
Издательства: Форум, Инфра - М; Серия: Профессиональное образование
ISBN 5-8199-0086-3, 5-16-001458-6, Тираж: 4000 экз., Формат: 60x90/16, Твердый переплет, 352 стр., 2003 г.

В пособии подробно рассмотрены основные подходы и направления развития систем баз данных. Анализируются классические машинно-ориентированные формы представления информации и данных. Рассматриваются типовые модели физической и логической организации данных. Исследуется архитектура средств доступа к данным. Достаточно подробно представлены возможности SQL как базового языка для работы с реляционными базами данных. Большое внимание уделено проблемам моделирования и проектирования баз данных. Предназначено для учащихся техникумов, колледжей, а также студентов вузов.

Книгу можно приобрести в следующих магазинах: Озон: 102,00 руб. Купить

[В начало]

Администрирование баз данных. Полное справочное руководство по методам и процедурам

Крейг С. Маллинс
752 стр. 2003
Издательство: КУДИЦ - ОБРАЗ

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

Книгу можно приобрести в следующих магазинах: Озон: 256,20 руб. Купить

[В начало]

Data Mining. Учебный курс (+CD ROM)

В. Дюк, А. Самойленко
368 стр. 2001
Издательство: Питер

Data Mining — это процесс обнаружения в сырых данных ранее неизвестных, нетривиальных, практически полезных и доступных интерпретации знаний (закономерностей), необходимых для принятия решений в различных сферах человеческой деятельности.

Книгу можно приобрести в следующих магазинах: Озон: 84,20 руб. Купить

[В начало]


Вопросы, предложения, коментарии, замечания, критику и т.п. присылайте Александру Гладченко на адрес: mssqlhelp@pisem.net

sql.ru Описание рассылки

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




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное