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

MS SQL Server

  Все выпуски  

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


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

#033<<#034

DBA и безопасность

Microsoft Security Bulletin (MS01-006)
31 января 2001г. Микрософт выпустил заплату, которая устраняет уязвимость защиты "Invalid RDP Data", обнаруженную в Microsoft Windows 2000 terminal server. Уязвимость позволяла организовать атаку на сервер, приводящую к отказу в обслуживании клиентов из сети. Windows 2000 Terminal Service не правильно обрабатывал ряд специфических пакетов данных в Remote Data Protocol (RDP). Получение атакуемым сервером таких пакетов может привести к его зависанию, перезагрузке или к потере текущих данных. В разосланном бюллетене подчёркивается, что с помощью такой атаки получить управление сервером невозможно.

Затронутые продукты:
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server

FAQ относительно этой уязвимости и заплаты можно найти тут:
http://www.microsoft.com/technet/security/bulletin/fq01-006.asp

Заплаты доступны тут:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27500
Обратите внимание на то, что эта заплатка может применяться к системам Windows 2000 Gold с установленным Service Pack 1. Она включена в Windows 2000 Service Pack 2.

Microsoft Security Bulletin (MS01-007)
5 февраля 2001г. Микрософт выпустил заплату "Network DDE Agent Request", которая устраняет уязвимость защиты в Microsoft Windows 2000. Уязвимость, позволявшую атакующему получить полный контроль над сервером. Network Dynamic Data Exchange (DDE) - технология, которая дает возможность прикладным программам на различных компьютерах Windows совместно использовать данные, причём, динамически. Совместное использование данных осуществляется через каналы связи, а сами ресурсы называются доверяемыми. Управляет этой службой так называемый Network DDE Agent. В соответствии с логикой приложения, процессы локальной машине могут передавать запросы к Network DDE Agent, в которых указано, что приложение обращается к доверяемому ресурсу. Уязвимость в том, что Windows 2000 Network DDE Agent использует в своей работе контекст защиты Local System и обрабатывает все запросы в этом контексте, а не в контексте пользователя. Атакующий мог заставить Network DDE Agent выполнить свой код в контексте Local System, и получить полный контроль над локальной машиной.

Затронутые продукты:
Microsoft Windows 2000 Professional
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server

FAQ относительно этой уязвимости и заплаты можно найти тут:
http://www.microsoft.com/technet/security/bulletin/fq01-007.asp

Заплаты доступны тут:
http://www.microsoft.com/technet/security/bulletin/fq01-007.asp
Обратите внимание на то, что эта заплата может быть установлена на системах Windows 2000 Gold с Service Pack 1 и Service Pack 2. Она будет включена в Service Pack 3.

Microsoft Security Bulletin (MS01-008)
7 февраля 2001г. Микрософт выпустил заплату "NTLMSSP Privilege Elevation", которая устраняет уязвимость защиты в Microsoft Windows NT 4.0. Уязвимость позволяла зарегистрировавшемуся на локальном компьютере пользователю предоставить себе привилегии уровня администратора. На этот раз, источником проблемы стал NTLM Security Support Provider (NTLMSSP), который мог потенциально позволить обычному пользователю получить администраторские права над системой. Для этого, пользователю достаточно было иметь действующую учетную запись для входа в систему и права на выполнение произвольного кода.

Затронутые продукты:
Microsoft Windows NT 4.0 Workstation
Microsoft Windows NT 4.0 Server
Microsoft Windows NT 4.0 Server, Enterprise Edition
Microsoft Windows NT 4.0 Server, Terminal Server Edition

FAQ относительно этой уязвимости и заплаты можно найти тут:
http://www.microsoft.com/technet/security/bulletin/fq01-007.asp

Заплаты доступны тут:
http://www.microsoft.com/technet/security/bulletin/fq01-007.asp
Обратите внимание на то, что эта заплата может быть применена к системам Windows NT 4.0 с установленным Service Pack 6a.

СОВЕТЫ

Оверклокинг утилит MS SQL Server
По материалам статьи Michael Otey на Sqlmag.com "Overlooked Command-Line Utilities"

Майкл пишет, что MS SQL Server располагает мощными графическими инструментальными средствами управления, но имеет также много не так широко известных утилит командной строки, которые Вы можете использовать в сценариях оболочки Windows NT или VBSCRIPT, для управления SQL сервером. Вот - его советы для семи наиболее часто используемых утилит MS SQL Server, которые входят в поставку MS SQL Server 2000 и 7.0:

7. Консольные команды Net Start и Net Stop MSSQLServer позволяют запускать и останавливать сервисы MS SQL Server из командной строки. Вы можете добавлять эти команды в собственные сценарии или командные файлы, чтобы автоматически перезапускать сервер баз данных.

6. Bulk Copy Program (BCP) - предназначена для загрузки/импорта данных в MS SQL Server или для их экспорта. Хотя автор не использует bcp, а предпочитает Data Transformation Services (DTS) из состава MS SQL Server 7.0, bcp (по его мнению) остаётся одной из полезных возможностей передачи данных. Описание синтаксиса этой утилиты очень подробно представлено в BOL.

5. Команда ODBCCMPT устанавливает уровень совместимости ODBC для пользовательского приложения. Эта утилита особенно полезна, когда Вы используете версию 3.x ODBC драйвера, но необходимо обеспечить подключение к MS SQL Server 2000 или 7.0 из пользовательского приложения через ODBC драйвер версии 2.x. Для поддержки совместимости с MS SQL Server 6.x, Вы можете использовать odbccmpt с ключом /v:6. Синтаксис команды - odbccmpt file_name /v:version_number

4. Утилита ITWIZ позволяет запускать Index Tuning Wizard MS SQL Server из командной строки.

3. ISQL и OSQL утилиты позволяют выполнять отдельные инструкции SQL, а также SQL скрипты, сохраненные в файлах - сценариях. Однако isql использует урезанную DB-Library для соединения с MS SQL Server. Нужно всегда помнить, что osql работает через ODBC. Ниже приведен синтаксис osql, который задаёт выполнение запроса, а результат выводит в файл:
osql /S Server_name /U user /P password /Q query /o output_file

2. Утилита DTSWIZ запускает DTS Import/Export Wizard из сценария NT или файла VBSCRIPT. Имеющиеся строковые параметры позволяют Вам не выводить диалоговые окна мастера, задавая необходимую информацию из командной строки.

1. Утилита командной строки DTSRUN запускает обслуживание DTS пакетов. Использование dtsrun в заданиях по расписанию MS SQL Server предоставляет Вам отличную возможность регулярно обрабатывать DTS пакеты. Вы можете хранить пакеты DTS в базе данных msdb, структурированном COM файле или Microsoft repository. Чтобы обработать DTS пакет, сохранённые в msdb, используйте следующий синтаксис:
dtsrun /S Server_name /U user /P password /N package_name

Обсудить в конференции

Сохранение результатов запроса в текстовом файле
По материалам статьи Brian Knight на SWYNK.COM "Piping Queries to a Text File"

Брайен пишет, что часто возникает необходимость сохранить результаты исполнения запроса в текстовом файле. Особенно это удобно, когда время исполнения запроса весьма велико или доступные ресурсы не позволяют запускать запрос в рабочие часы, и Вы решите запустить исполнение запроса ночью, а результаты посмотреть утром. Вы можете создавать задание, содержащее CMDEXEC, которое выполнит необходимые команды и выведет результаты запроса c:\inputquery.txt в отдельный файл.

\mssql7\binn\osql -Usa -Ppassword -ic:\inputquery.txt -oc:\outputdir\output.txt

Если Вы не хотите открыто записывать пароль в ваше задание, можно использовать ключ "E" для организации доверительного подключения.
Также, можно воспользоваться расширенной хранимой процедурой XP_CMDSHELL:

master..xp_cmdshell 'osql -Usa -Pmisty -Q"select * from products" -dNorthwind -oc:\output.txt' '

Параметр "Q" задаёт строку запроса.
В конце запроса Вы можете добавить дополнительный параметр NO_OUTPUT, для блокирования любого вывода клиенту.

master..xp_cmdshell 'osql -Usa -Pmisty -q"select * from products" -dNorthwind -oc:\output.txt', no_output

Есть и другие методы конвейерной пересылки результатов исполнения запроса в текстовый файл (например, используя OLE Automation) но они более трудоёмки, чем этот метод.

Обсудить в конференции

Дефрагментация базы данных
По материалам статьи Rahul Sharma на SWYNK.COM "Database Defragmentation"

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

--Переиндексируем указанную базу данных,
CREATE PROCEDURE usp_DefragDatabase
-- Мы не будем использовать просто sysname,
-- потому что у него не достаточная длинна.
-- sysname вмещает 128 символов, так что мы возьмём его двойной формат.
@dbname nvarchar(256)
AS
BEGIN
-- Укажем имя базы данных в скобках.
DECLARE @quoteddbname nvarchar(256)
set @quoteddbname = quotename( @dbname )
-- Для всего того, что не попадёт в EXEC, Вы можете
-- выполнить USE отдельно от этой процедуры.
-- Для всего, что попадёт в EXEC, будет выполнена
-- переиндексация каждой таблицы указанной базы данных.
EXEC('
USE '+ @quoteddbname +'
DECLARE @sTableName sysname
DECLARE PKMS_Tables CURSOR LOCAL FOR
select table_name from information_schema.tables
where table_type = ''base table'' order by 1
OPEN PKMS_Tables
FETCH NEXT FROM PKMS_Tables INTO @sTableName

WHILE @@FETCH_STATUS = 0
BEGIN
select @sTablename = quotename(@sTablename, ''[]'')
EXEC('' DBCC DBREINDEX ( ''+@sTableName+'') WITH NO_INFOMSGS'')
FETCH NEXT FROM PKMS_Tables INTO @sTableName
END
CLOSE PKMS_Tables')
END
GO

Обсудить в конференции

ГОТОВИМСЯ К ТЕСТУ ПО 70-028

ШПАРГАЛКА #7> Продолжение (обзор официального курса Microsoft)
Архив шпаргалок Вы найдёте на следующих сайтах:
http://mssqlhelp.com.ru
http://subscribe.ru/archive/comp.soft.winsoft.sqlhelpyouself

Оповещения

Дорожащий своей работой DBA всегда испытывает повышенный интерес к событиям сервера, которые (почему-то) норовят произойти с сервером в его отсутствие. Современные требования приложений баз данных заставляют администраторов поддерживать работоспособность своих систем семь дней в неделю и 24 часа в сутки. С другой стороны, при условии грамотного администрирования, можно добиться высокой степени готовности и доступности программно - аппаратного комплекса, так, что вмешательство обслуживающего персонала будет происходить в очень редких случаях, а у руководства будет складываться впечатление, что его специалисты сидят без работы. Однако маломальский опыт обслуживания серверов баз данных подсказывает DBA, что серьёзные проблемы всё же возникают (в самый не подходящий и неожиданный момент), и их детальный анализ, как правило, указывает на то, что проблему можно было прогнозировать и предотвратить. Об одном из инструментов, который помогает DBA оперативно получать необходимую информацию для принятия решений о реакции на события сервера, и который является неотъемлемой частью MS SQL Server, мы сегодня и поговорим.
Всем известно, что заполнение журналом транзакций всего дискового пространства может стать катастрофой для сервера. У администратора достаточно средств контроля размера журнала и дискового пространства, но те средства, которые входят в стандартную поставку, требуют от него выполнять этот контроль вручную. Также, можно устроить автоматический опрос критичных параметров, оформив соответствующее задание и запуская его по расписанию, но это тоже, как-то не по-людски. Вот если бы сервер присылал вовремя необходимые предупреждения на пейджер или (в крайнем случае) по электронной почте... Что же, нельзя не отметить, что MS SQL Server предоставляет прекрасный инструмент для передачи сообщений о событиях сервера - это ОПОВЕЩЕНИЯ.
Таким образом, Вы можете использовать оповещения для оперативного реагирования на неисправности или ошибки сервера, для отслеживания и принятия мер при изменении режима работы, для реакции на действия пользователей или их ошибки, а также, если ни один из операторов в момент критичного события не доступен, отправить оповещение оператору последней надежды.
Существует только ода причина, в ответ на которую Вы сможете отправить оператору(ам) оповещение - это появление в журнале приложений Windows NT записи об ошибке/событии, которая порождена или одной из служб или определена пользователем. Что бы появилась возможность вносить записи в журнал NT, порождающие их события должны быть описаны заранее. Большинство ошибок/событий определены разработчиками в стандартных поставках операционной системы и сервера баз данных. Если возникает необходимость, Вы можете дополнить стандартный набор сообщений своими собственными, которые будут генерироваться из хранимой процедуры или триггера посредством оператора RAISERROR. Механизм отслеживания событий сервера баз данных достаточно гибок и позволяет Вам регистрировать и оповещать оператора даже об удалении пользователем отдельных записей из таблиц баз данных. Последовательность отработки оповещения, в таком случае, будет следующая: вначале, происходит само действие (удаление записи), например, в рамках процедуры содержащей RAISERROR; сгенерированное RAISERROR сообщение/ошибка (здесь применяется код ошибки из диапазона кодов, предоставленных для пользователя) записывается в журнал приложений Windows NT; журнал NT передаёт службе SQL Server Agent информацию о появлении записи, содержащей код ошибки; SQL Server Agent сверяет коды всех ошибок со списком оповещений, предварительно записанных в таблицу msdb..sysalerts, которая в течении сеанса работы сервера находится в кэше; если соответствие кодов ошибки установлено, из системной таблицы msdb..sysnotifications выбирается соответствующее оповещение, а адресат оповещения определяется в таблице msdb..sysoperators.
Каждому номеру ошибки/события или их классу/уровню может быть сопоставлено только одно оповещение. Разные оповещения на одну ошибку Вы можете определять только для разных баз данных. Однако, если этого достаточно, можно определить для конкретного уровня или ошибки одно оповещение для всех баз данных. Если у Вас определены для одной ошибки оповещения для каждой базы данных и для всех баз данных, выполнится более конкретное оповещение, т.е. оповещение для конкретной базы данных. Два или более оповещений на одну ошибку выдаваться никогда не будут. Если Вы определяете оповещение для всех баз данных или для целого уровня ошибок, удобно использовать метки подстановки, которые дополнят текст описания именами затронутых событием объектов. В столбце описания таблицы sysmessages, символ процента (%) и расположенные за ней символы служат как метка, определяющая подставляемое имя объекта в генерируемый текст описания ошибки. Например, %d - метка числового значения, а %ls (или '%.*ls') - метка строки. Для текста сообщения об ошибке 105 (Unclosed quote before the character string %.*ls.), вместо %.*ls может быть подставлено или "SA" или другой логин.
Вот несколько примеров использования меток подстановки, взятые из таблицы sysmessages:
Номер ошибки / Описание ошибки
21 / Warning: Fatal error %d occurred at %S_DATE.
103 / The %S_MSG that starts with '%.*ls' is too long. Maximum length is %d.
231 / No such default. ID = %ld, database ID = %d.
232 / Arithmetic overflow error for type %ls, value = %f.
Оповещения, определённые для уровня/категории ошибок обрабатываются сервером несколько иначе, чем простые оповещения. Например, для уровней ошибок 19-25 установлена автоматическая запись в журнал приложений Windows NT. Для не устранимых ошибок (уровни с 20 по 25) необходимо обязательно указать оповещаемого оператора. Несколько таких оповещений, с пометкой "Demo", определяются при инсталляции сервера. Для того, что бы они стали активны, необходимо убрать пометку "Demo", а для не устранимых ошибок назначить оповещаемого оператора.
Обслуживание оповещений может отнимать у сервера значительные ресурсы. Для того, что бы разгрузить "слабый" сервер, можно организовать переадресацию событий/ошибок на другой сервер баз данных. Для этого, при настройке службы SQL Server Agent необходимо указать другой сервер, на который будут передаваться сообщения об ошибках заданного уровня или все ошибки не ниже заданного уровня.
Кроме стандартных ошибок/событий, у Вас есть возможность определять оповещения для ошибок пользователей приложений баз данных, которые будут генерироваться оператором RAISERROR или на стороне клиента или из хранимой процедуры. Оператор RAISERROR возвращает сообщение об ошибке и устанавливает с помощью системной функции @@error флаг регистрации ошибки. Например:
...
RAISERROR (50111, 16, 1, @CustomerID, @username)
...
При этом, в текст сообщения об ошибке параметр @CustomerID может быть передан меткой %d, а @username меткой %s.
К примеру, использование этого оператора в триггере обновления таблицы и вызове его при не выполнении заданного условия (контрольного значения), может предоставить Вам возможность создания оповещения оператору, для того, что бы он мог вовремя вмешаться и урегулировать зафиксированные расхождения. Для создания такого оповещения необходимо предварительно определить новое сообщение об ошибке, сгенерировать ошибку в приложении и определить на основании этой ошибки необходимое оповещение. Оповещение будет невозможно, если в журнал приложений Windows NT не будет сделана соответствующая запись об ошибке или событии. Удобным инструментом для ввода пользовательских ошибок является Enterprise Manager или системная хранимая процедура sp_admessage. Для определяемых Вами пользовательских ошибок/событий у сервера выделен диапазон номеров, начиная с 50000. Номера меньше пятидесяти тысяч зарезервированы для нужд сервера. Все номера ошибок и их описания хранятся в базе master, в таблице sysmessages. При определении нового кода ошибки можно использовать метки параметров, для уточнения необходимых деталей. Например:
EXEC sp_admessage 50111, 16, 'Customer %d was deleted by %s', 'us_english', 'true'
Метка %d подставит номер заказчика, а %s - имя пользователя, его удалившего из таблицы заказчиков. В результате, сгенерированная приложением ошибка 50111 будет записана в журнал NT, что породит определённое предварительно оповещение следующего содержания:

Error: 50111, Severity: 16, State 1
Customer 911 was deleted by DOM1\customkiller

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

С помощью механизма оповещений можно не только оперативно получать информацию об ошибках/событиях сервера, но и отслеживать изменения режимов и характеристик его работы. Например, можно отслеживать те же самые параметры, которые контролируются программой Windows NT Performance Monitor и выдавать оповещения, если превышены заданные Вами пороговые значения этих параметров. Таким образом, можно заведомо узнать о том, что журнал транзакций вот-вот заполниться и автоматически выполнить его резервирование. Причём совершенно не обязательно, что бы Windows NT Performance Monitor был запущен. Для отслеживания режимов функционирования ресурсов SQL сервера, вы можете определить оповещения для следующих объектов: Access Methods (методы доступа); Buffer Manager (диспетчер буфера); Cache Manager (диспетчер кэша); Databases (базы данных); Locks (блокировки); SQL Statistics (статистика SQL). Существует маленький нюанс, связанный с задержкой во времени между событием/ошибкой и генерацией оповещения. Для того, что бы оповещение было создано и получено вовремя (т.е. до того момента, когда событие может негативно повлиять на работу сервера или приложения) существует возможность изменения интервала задержки между ответами, или можно подобрать такое пороговое значение, которое позволит оператору или непосредственно оповещению выполнить необходимые действия до достижения критического значения.
Самым быстрым способом доведение информации о событиях/ошибках на сервере до оператора является передача оповещения на пейджер. Но может случиться так, что это событие произойдёт в то время, когда в расписании доступности операторов не будет существовать ни одного, кто в это время работает. Для того, что бы гарантировать получение оповещения в допустимые сроки, можно определить оператора "последней надежды", который может быть только один. Для обеспечения передачи оповещений оператору "последней надежды" необходимо, что бы служба SQL Server Agent была запущена. Правда, если в Ваше отсутствие, эта служба остановиться, оповещение всё равно будет отправлено, т.к. информация об операторе "последней надежды" заноситься в кэш. Если Вам в последствии потребуется удалить или изменить оператора "последней надежды", то Вы должны вначале отменить назначение оператора "последней надежды", а потом удалить самого оператора или установить назначение другому.

Продолжение следует

ПОЛЕЗНОСТИ

В помощь осваивающим SQL - великолепный англоязычный сайт:
http://sqlcourse.com/

Новые технические статьи Microsoft:

SQL Server Weekly Quick Tips
http://support.microsoft.com/support/SQL/Content/sqltips.asp
Q264160 - PRB: Column Level CHECK Constraint Required Before Implementing a Partitioned View
http://support.microsoft.com/support/kb/articles/q264/1/60.ASP
Q285103 - BUG: SQL Server 2000 Books Online Documentation Incorrect About SAPASSWORD and USEDEFAULTSAPWD Options for SQL Server 2000 Desktop Engine Installation
http://support.microsoft.com/support/kb/articles/q285/1/03.ASP
Q286199 - BUG: Error Message "Transaction Cannot Start in Firehose Mode" Occurs When a Table is Open in SQL Server Enterprise Manager During a Failover
http://support.microsoft.com/support/kb/articles/q286/1/99.ASP
Q281680 - BUG: FORMATMESSAGE Works with the Same User-Defined Messages as RAISERROR
http://support.microsoft.com/support/kb/articles/q281/6/80.ASP
Q246255 - HOWTO: Use a SQL Server 7.0 Distributed Query with a Linked Server to Secured Access Databases
http://support.microsoft.com/support/kb/articles/q246/2/55.ASP
Q278980 - FIX: Insert with SUBSTRING Operation Fails if JOIN Comparison is Based on NULL Values and LIKE Clause
http://support.microsoft.com/support/kb/articles/q278/9/80.ASP
Q274266 - FIX: Data Modification Query with a Distinct Subquery on a View May Cause Error 3624
http://support.microsoft.com/support/kb/articles/q274/2/66.asp
FAQs & Highlights for SQL Server
http://support.microsoft.com/highlights/sql.asp
FAQs & Highlights for Visual Studio
http://support.microsoft.com/highlights/vst.asp
Q281213 - PRB: SQL Server CE Setup on Windows 2000 Error Message: The Installer Was Interrupted
http://support.microsoft.com/support/kb/articles/q281/2/13.ASP
Q275145 - FIX: Only One SQL Server Performance Condition Alert Is Treated As Active
http://support.microsoft.com/support/kb/articles/q275/1/45.ASP
Q280468 - BUG: SELECT with GROUP BY ALL Clause in a Nested Correlated Subquery Causes 8624 Error Message or Access Violation
http://support.microsoft.com/support/kb/articles/q280/4/68.ASP
Q280735 - BUG: When You BCP More Than 117 Columns an Access Violation Occurs
http://support.microsoft.com/support/kb/articles/q280/7/35.ASP
Q286370 - PRB: OpenQuery Function Fails with Queries That Exceed 8000 Characters
http://support.microsoft.com/support/kb/articles/q286/3/70.ASP
Q285996 - PRB: Cost of Using Non-Clustered Indexes May Be Incorrect if Data Correlation Exists
http://support.microsoft.com/support/kb/articles/q285/9/96.ASP
Q171221 - INF: List of Version Numbers of ODBC Driver Manager and SQL Server
http://support.microsoft.com/support/kb/articles/q171/2/21.asp
Q199294 - INF: Server Side Cursors Remain Open when CURSOR_CLOSE_ON_COMMIT Set OFF
http://support.microsoft.com/support/kb/articles/q199/2/94.asp
Q231943 - INFO: Microsoft Data Access Components (MDAC) Release History
http://support.microsoft.com/support/kb/articles/q231/9/43.asp
Q274797 - INF: SQL Server 7.0 Service Pack 3 Fixlist
http://support.microsoft.com/support/kb/articles/q274/7/97.asp

#033<<#034


Вопросы, предложения, коментарии, замечания, критику и т.п. присылайте Александру на адрес: MSSQLHelp@pisem.net
Хостинг рассылки:
Majordomo.ru - качественный хостинг от $9 в месяц: от 10 Мб,неограниченный трафик, от 10 РОР3, Cgi-bin, MySQL, PHP и секретный сервер, FTP & anonymous FTP, бесплатная регистрация домена,перекодировка кириллицы... http://www.majordomo.ru/hosting и самое главное - уникальное предложение : ДОМЕННОЕ ИМЯ в зоне .ru, .com, .net, .org БЕСПЛАТНО. Побробности http://www.majordomo.ru/hosting/specpr.html

MSSQLHELP
SQL.RU
ФОРУМ
Описание рассылки



http://subscribe.ru/
E-mail: ask@subscribe.ru
Поиск

В избранное