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

MS SQL Server

  Все выпуски  

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


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


#112<<  #113

СОДЕРЖАНИЕ

1.БЕЗОПАСНОСТЬ
1.1.Cumulative Patch for SQL Server (Q316333)
1.2.Подробности об уязвимостях в Microsoft SQL Server 7/2000
2.СОВЕТЫ
2.1.Мультисерверное администрирование
2.1.1.Введение
2.1.2.Организация мультисерверного администрирования
2.1.3.Управление мультисерверным администрированием
2.1.4..Target Server Status
2.1.5.Download Instructions
2.1.6.Добавление подчинённых серверов
2.1.7.Мультисерверный план обслуживания
2.1.8.Мультисерверные задания
2.1.9.Безопасность
2.1.10.Удаление мультисерверного администрирования
3.ССЫЛКИ НА СТАТЬИ
3.1.Отечественные статьи
3.2.Новые технические статьи Microsoft
3.3.Англоязычные статьи
4.ПОЛЕЗНОСТИ
4.1.Вышла в свет новая версия утилиты SQLExecMS
5.ФОРУМ SQL.RU
5.1.Самые популярные темы недели
5.2.Вопросы остались без ответа

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

Cumulative Patch for SQL Server (Q316333)
По сообщению securitylab.ru от 2 октября 2002г. выпущен Microsoft Security Bulletin MS02-056

Выпущенный очередной комулятивный патч для SQL Server 7.0, SQL Server 2000 и MSDE 1.0-2000. Кроме уже известных уязвимостей, к этом патче устранены новые:

  • Переполнение буфера в SQL Server 2000 и MSDE 2000 могло позволить злоумышленнику выполнить произвольный код в контексте безопасности SQL сервера.
  • Переполнение буфера в команде DBCC позволяло атакующему выполнить произвольный код в контексте учетной записи SQL сервера.
  • Уязвимость scheduled jobs в SQL Server 7.0 и 2000. SQL Server позволяла непривилегированным пользователям создавать запланированную задачу, которая будет выполнена SQL Server агентом. Как предполагается, SQL Server Agent должен выполнять шаги задачи только с привилегиями пользователя. Однако, когда шаг задачи требует создание выходного файла, SQL Server Agent использует собственные привилегии, вместо привилегий создателя задачи. Это создает ситуацию, в которой непривилегированный пользователь может создать такую задачу, которая создаст файл, содержащий команды операционной системы в папке запуска другого пользователя, или просто сможет осуществлять запись поверх системных файлов.
  • Патч также устранил возможность непривилегированного пользователя выполнять специальные запросы через SQL OLEDB.

Уязвимости исправлены для: Microsoft SQL Server 7.0, Microsoft Data Engine (MSDE) 1.0, Microsoft SQL Server 2000, Microsoft Desktop Engine (MSDE) 2000.

Скачать патчи можно тут:

SQL Server 7.0 Security Update for Service Pack 4
Download 7.00.1077_enu.exe

SQL Server 2000 Security Update for Service Pack 2
Download 8.00.0679_enu.exe

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

Подробности об уязвимостях в Microsoft SQL Server 7/2000
По сообщению securitylab.ru от 4 октября 2002

Комулятивный патч для SQL Server 7-2000 выпущенный 2 октября устраняет 4 новых уязвимости. Уязвимость, известная как Dave Aitel's "hello" bug (переполнение буфера в процессе идентификации), также была устранена в этом патче.

Кроме того, была устранена проблема создание произвольных файлов на системе SQL сервера. Пример:


USE msdb
EXEC sp_add_job @job_name = 'ArbitraryFileCreate',
@enabled = 1,
@description = 'This will create a file called c:\sqlafc123.txt',
@delete_level = 1
EXEC sp_add_jobstep @job_name = 'ArbitraryFileCreate',
@step_name = 'SQLAFC',
@subsystem = 'TSQL',
@command = 'select ''hello, this file was created by the SQL Agent.''',
@output_file_name = 'c:\sqlafc123.txt'
EXEC sp_add_jobserver @job_name = 'ArbitraryFileCreate',
@server_name = 'SERVER_NAME'
EXEC sp_start_job @job_name = 'ArbitraryFileCreate'

По сообщению Microsoft, команды "операционной системы" могут быть вставлены в файлы - т.е. созданные файлы могут быть помещены в папку автозагрузки. Но это не сработает при использовании SQL Server 2000. Текст создаваемого файла будет в кодировке UNICODE, т.е. после каждых двух байт следует символ NULL. Символ NULL препятствует выполнению команд OS. Самый опасный риск этой уязвимости - перезапись файла ntoskrnl.exe. Неизвестно, сработает ли это на SQL 7.0.

Также патч изменил права доступа к следующим процедурам (скорее всего для решение проблемы Дейва Эйтэля):


USE master
GO
REVOKE EXECUTE ON sp_add_job from public
GO
REVOKE EXECUTE ON sp_add_jobstep from public
GO
REVOKE EXECUTE ON sp_add_jobserver from public
GO
REVOKE EXECUTE ON sp_start_job from public
GO

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

СОВЕТЫ

Мультисерверное администрирование
По материалам статьи Robert Marda: Multi-Server Administration

Введение

Мультисерверное администрирование позволяет создавать задания (jobs) и планы обслуживания (maintenance plans) в одном месте, на сервере, именуемом master. Все задания и планы обслуживания, созданные на master-сервере, могут быть выполнены на любом сервере, указанном для него как подчинённые сервера. Состояние таких заданий также может быть проверено на master-сервере. Использование мультисерверного администрирования позволяет централизовать администрирование на одном SQL сервере.
Ценность мультисерверного администрирования зависит в значительной степени от того, сколько SQL серверов им охватывается и сколько заданий и/или планов обслуживания будет сосредоточено на центральном сервере.
Эта статья призвана осветить основные вопросы применения мультисерверного администрирования, чтобы помочь Вам использовать эти возможности на своих SQL серверах. Всё описанное в этой статье было проверено для SQL Server 7.0 с SP3. Вероятно, что большинство из того, что автор описывает в этой статье, может быть применимо и на SQL Server 2000.

Организация мультисерверного администрирования

Для организации мультисерверного администрирования необходимо иметь минимум два SQL сервера. Один сервер будет выбран как master или MSX, а другие будем обозначать, как подчинённые сервера или TSX. Автору не известно предельное количество подчинённых серверов, которые может обслуживать один master - сервер. Однако существует ограничение, которое оговаривает, что подчинённый SQL Server может иметь только один master - сервер.
Настроить мультисерверное администрирование можно дважды щёлкнув мышкой по папке Management, щёлкнуть правой кнопкой по SQL Server Agent, выбирать Multi Server Administration и выбрать Make this a master. Активизируется визард, который создаст master - сервер и зарегистрирует подчинённые серверы, которые Вы укажете. Пройдите все шаги этого визарда и мультисерверное администрирование будет настроено. После этого Вы сможете добавлять задания и планы обслуживания. Первый экран визарда Make MSX Wizard запрашивает контактную информацию для специального оператора с именем MSXOperator. Это будет единственный оператор, который сможет получать уведомления от многосерверных заданий. Также, если Вы планируете получать уведомления по электронной почте, каждый подчинённый сервер, с которого Вы хотите посылать сообщения электронной почты, должен иметь почтовый профиль для SQL Server Agent. В теме каждого письма электронной почты будет указано, какой из подчинённых серверов послал Вам сообщение.
Автор не знает, могут ли собранные в кластер серверы включатся в мультисерверное администрирование. Он наблюдал одно существенное отличие при попытке подключить сервер из кластера. Список заданий, который исполняет визард, включает физический рестарт SQL Server Agent, который не возможен в кластерной среде, т.к. серверы в кластере используют виртуальный SQL Server Agent.

Управление мультисерверным администрированием

Для управления мультисерверным администрированием можно следовать тем же самым инструкциям по запуску визарда, которые автор дал выше, и выполнять с помощью визарда необходимую конфигурацию. Измениться только то, что опция Make this a master будет недоступна. Дважды щёлкните мышкой по папке Management, потом правой кнопкой щёлкните по SQL Server Agent, выберете Multi Server Administration и потом Manage Target Servers. Вы увидите окно со списком всех ваших подчинённых серверов. Для дальнейшей работы будут доступны две вкладки: Target Server Status и Download Instructions.

Target Server Status

На вкладке Target Server Status есть три кнопки. Кнопка Force Poll используется для принудительного исполнения выбранными подчинёнными серверами подготовленных для них команд. Нажатие этой кнопки также сбрасывает счётчик времени между опросами подчинённых серверов (автор более детально разбирает это ниже).
Кнопка Force Defection используется для удаления подчинённого сервера из мультисерверного администрирования. Выполнение такого удаления на master-сервере не удалит многие из заданий на подчинённом сервере. Вы можете удалить оставшееся на подчинённом сервере, щёлкнув правой кнопкой мыши по SQL Server Agent этого сервера, выбирав Multi Server Administration и потом Defect From MSX. Когда автор проверял действие этой кнопки для подчинённого сервера, вся ссылки на него были удалены у master-сервера. Лучшее не использовать кнопку Force Defection, т.к. Вы можете создать специальную команду (defect instruction), которая автоматически очистит большинство связанных с мультисерверным администрированием заданий и т.п. (более подробно о том, что не очищается при нажатии кнопки Force Defection, будет рассказано в других частях этой статьи).
Кнопка Post Instructions позволяет создавать инструкции для подчинённых серверов: defect (дефектовка), change the polling interval (изменить интервал опроса), synchronize clock (синхронизация времени с master-сервером) и инструкции для запуска заданий. Дефектовка предназначена для очистки информации о подчинённости сервера, например, когда действительно с этим сервером есть неразрешимые проблемы. Эта команда будет загружена и выполнена при следующем опросе, который инициирует master-сервер. После получения команды на дефектовку, сервер удалит из списка подчинённый сервер и очистит почти всё связанное с ним из мультисерверного администрирования. Этим автор подразумевает, что будут удалены все задания дефектуемого сервера. Однако, если задания были созданы в рамках плана обслуживания (maintenance plan), этот план не будет удалён. Заглянув в этот план обслуживания, Вы обнаружите, что ни на одной из его вкладок ничего не помечено. Следующие два запроса удалят оставшийся не удалённым план обслуживания:


USE msdb
DELETE mpd
FROM sysdbmaintplan_databases mpd
WHERE mpd.plan_id IN
(
SELECT mp.plan_id
FROM sysdbmaintplans mp
LEFT JOIN sysdbMaintplan_jobs mpj ON mpj.plan_id = mp.plan_id
LEFT JOIN sysjobs j ON
SUBSTRING(name,CHARINDEX('''',name,1) + 1, LEN(name) - 1 - CHARINDEX('''',name,1)) = mp.plan_name
WHERE mpj.plan_id IS NULL
AND mp.plan_name <> 'All ad-hoc plans'
AND j.job_id IS NULL
)
DELETE mp
FROM sysdbmaintplans mp
LEFT JOIN sysdbMaintplan_jobs mpj ON mpj.plan_id = mp.plan_id
LEFT JOIN sysjobs j ON
SUBSTRING(name,CHARINDEX('''',name,1) + 1, LEN(name) - 1 - CHARINDEX('''',name,1)) = mp.plan_name
WHERE mpj.plan_id IS NULL AND mp.plan_name <> 'All ad-hoc plans' AND j.job_id IS NULL

Команда Set Polling Interval позволяет изменять интервал опроса, который, по умолчанию, равен 60 секундам. Интервал опроса может быть различным для каждого подчинённого сервера. Интервал устанавливается в секундах и может быть в интервале между 10 и 28800 (8 часов). Для того, что бы новый интервал опроса вступил в силу немедленно, Вы можете нажимать кнопку Force Poll. При таком форсировании опроса подчинённого сервера для исполнения им новых команд, происходит сброс интервала опроса, и начинается отсчёт с этого времени, когда Вы инициировали опрос подчинённого сервера.
Автор статьи наблюдал, что после дефектовки подчинённого сервера и последующего его же включения в мультисерверное администрирование на том же самом master-сервере, установленный этому подчинённому серверу интервал опроса сохраняется с таким значением, какое было до дефектовки. Это значение не будет сброшено к значению по умолчанию в 60 секунд. Автором статьи были осуществлены замеры сетевого трафика, который порождает Мультисерверное администрирование. Он использовал локальную сеть 100 MB Ethernet, использующую коммутатор для подключения всех серверов. В сети был один master-сервер и три подчинённых сервера. Опрос осуществлялся каждые 10 секунд. Во время опроса автор наблюдал величину сетевого трафика. Утилизация сети была настолько мала, что её можно считать незначительной. Автор полагает, трафик не должен создавать проблемы в любой сети, и Вы всегда можете увеличить интервал опроса, что бы сократить этот трафик. Например, опрос каждый час или каждые два часа по линии T1 не должен создавать никаких проблем, поскольку опрос длится только секунду и даже меньше.
Последняя команда, которую Вы можете использовать, относится к мультисерверным заданиям (multi server job). Мультисерверные задания будут обсуждены ниже в этой статье.
Все эти команды могут быть назначены одному и более серверу или всем подчинённым серверам.

Download Instructions

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

Добавление подчинённых серверов

Для этого просто щёлкните правой кнопкой по SQL Server Agent master-сервера, к которому Вы планируете добавить подчинённый сервер, выберите Multi Server Administration и потом Add Target Server. В списке, который Вы увидите, будут SQL серверы, которые уже зарегистрированы в Enterprise Manager того компьютера, на котором Enterprise Manager в этот момент запущен. Список будет включать серверы, которые являются подчинёнными серверами и возможно другие master-серверы. Однако, Вы не можете сделать подчинённым сервером тот сервер, который уже исполняет роль master-сервера или те сервера, которые уже являются подчинёнными другому master-серверу. Для того, что бы подчинить такой сервер, сначала Вы должны дефектовать подчинённый сервер на другом master-сервере. Каждый подчинённый сервер может иметь только один master - сервер. Также Вы можете сделать подчинённым сервер непосредственно подключившись к этому серверу, щёлкнуть правой кнопкой мыши по его SQL Server Agent, выбирать Multi Server Administration и потом Make this a Target. Запуститься визард Make TSX Wizard, в котором Вам нужно будет указать имя соответствующего master-сервера.

Мультисерверный план обслуживания

После того, как Вы настроили мультисерверное администрирование, можно создавать мультисерверные планы обслуживания. Такие планы должны сдаваться на master-сервере. Процесс их создания идентичен тому, как это делается на обычном сервере за исключением того, что на первом экране визарда нужно определить, на каких серверах этот план должен исполнятся. Вы можете выбирать один, несколько или все подчинённые сервера, а также локальный сервер. После создания плана, чтобы получить maintenance plan, Вы можете подождать до следующего сеанса опроса master-сервера или можно инициировать опрос принудительно. Всякий раз, когда Вы будете вносить изменения в maintenance plan, будет инициирован опрос, и соответствующие команды будут отправлены на подчинённый сервер. Все изменения, сделанные в плане, также будут отражены в заданиях на локальном сервере, если Вы включили его (master-сервер) в мультисерверный maintenance plan.
Автор заметил, что если изменять только параметр на вкладке оптимизации "free space percentage", это изменение не будет отправлено на подчинённый сервер. Однако, если кроме того изменить опцию Shrink database, то оба изменения будут отправлены на подчинённый сервер. Лучший способ удостовериться в том, что изменение действительно будет отправлено, это повторное открытие maintenance plan и проверка наличия в нём выполненных Вами изменений. Если изменения там отражены, Вы можете проверить отправленные команды для подчинённых серверов.

Мультисерверные задания

После успешного создания master-сервера, Вы заметите знак + (плюс) рядом со значком папки заданий в левом окне Enterprise Manager. Когда щёлкните мышкой по этому значку, Вы увидите две папки: Local Server Jobs и Multi Server Jobs. Задания, которые Вы хотите выполнять на master-сервере, должны быть созданы в папке Local Server Jobs.
Мультисерверные задания, созданные на master-сервере не могут выполняться на локальном сервере. Если Вы создавали мультисерверный maintenance plan, который выполняется на подчинённых серверах и на локальном сервере, в папке Local Server Jobs будет находиться задание для maintenance plan, который выполняется на master-сервере. В папке Multi Server Jobs будут такие же задания для того же самого maintenance plan, только они будут выполнятся на подчинённых серверах. Создание новых заданий осуществляется обычным способом, отличие только в том, что для заданий в папке Multi Server Jobs нужно указать один или более подчинённых серверов. В свойства задания, в нижнем, правом углу располагается кнопка Change (обычно не активная для локальных заданий), которая позволяет выбрать подчинённые серверы для мультисерверного задания (один, несколько или все).
Вы можете щёлкнуть правой кнопкой мыши по любому мультисерверному заданию (на master-сервере) и выбрать job status, чтобы увидеть текущее состояние выполнения заданий на каждом подчинённом сервере. Что бы увидеть хронологию исполнения задания выбранного подчинённого сервера, просто щёлкните правой кнопкой по этому серверу и выберете пункт истории исполнения задания. Это очень удобно, т.к. Вы сможете просматривать хронологию заданий для всех подчинённых серверов, вместо того, что бы открывать каждый сервер.
Кнопка Target Server Status открывает то же самое окно, которое описано в предыдущем абзаце.
Кнопка Synchronize Jobs необходима только при восстановлении базы msdb на master-сервере и она восстанавливает те изменения в мультисерверных заданиях, которые произошли после последнего резервного копирования.

Безопасность

Мультисерверные задания и MSXOperator на каждом подчинённом сервере не могут быть изменены локально. Все изменения должны производиться на master-сервере. Это гарантирует, что Вы или другой администратор случайно (или преднамеренно) не изменят или удалят такие задания. Кроме того, Вы можете быть уверены, что все мультисерверные задания будут идентичны.

Удаление мультисерверного администрирования

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


USE msdb
DELETE j
FROM sysjobs j
WHERE j.category_id = 2 --This is the ID for multi server jobs
IF (EXISTS (SELECT name FROM msdb.dbo.sysoperators
      WHERE name = N'MSXOperator'))
---- Delete operator with the same name.
EXECUTE msdb.dbo.sp_delete_operator @name = N'MSXOperator'

С другой стороны, если Вы не удалите мультисерверные задания и потом повторно установите master-сервер, тогда старые задания автоматически появятся в папке заданий этого сервера. Вам останется только указать для них подчинённые сервера, и они будут готовы к использованию. Задания с категорией Uncategorized (multi-server) не могут быть выполнены на бывшем master-сервере, пока Вы не измените категорию на локальную. Так что, если Вы планируете продолжать их использование, Вы должны или выполнить указанные выше рекомендации по удалению или изменить их категорию.

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

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

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

Yukon появится в середине 2003 года
Корпорация Microsoft готовит к выпуску 64-разрядную СУБД и СУБД следующего поколения, получившую название Yukon, которая предлагается в первую очередь в качестве фундамента хранилищ данных и позволит свести к минимуму сроки простоя. Выпуск бета-версии Yukon и 64-разрядной версии SQL Server, получившей название SQL Server 2000 64-bit, должен состояться в начале 2003 года...
VCL.TUpdateSQL.Выполнение нескольких SQL команд
В стандартной поставке Delphi TUpdateSQL позволяет выполнить только одну SQL команду, но возникает ситуация, когда желательно выполнить сразу несколько команд (например: удаление из двух таблиц одновременно, когда нет возможности установить каскадное удаление (DBF, DB)) или запустить процедуру на SQL сервере. В этом случае можно обойти ограничение, навязанное Delphi в виде ошибки Update Failed, возникающей при сохранении данных...
Введение в возможности пакета Rational Suite AnalystStudio для аналитиков данных
Новое дополнение компании Rational Software к средствам моделирования данных продукта Rational Rose предоставляет группам разработчиков ПО возможности унифицированного моделирования. Унифицированное моделирование предназначено для интегрирования аналитиков данных в группы разработки и помогает устранить недостатки обмена информацией, существующие во многих современных организациях. Это достигается путем использования разработчиками моделей, аналитиками и программистами общей системы обозначений – унифицированного языка моделирования (UML) – и введением набора интегрированных инструментов, позволяющим аналитикам данных активно участвовать в процессе разработки...
Управление изменениями, тестированием и документированием с использованием технологий Rational
В статье рассказывается о средстве управления изменениями Rational ClearQuest, которое позволяет совместно с инструментами тестирования (Robot, TestManager, Purify, Quantify и PureCoverage) тщательно документировать встречающиеся при испытаниях дефекты...

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

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

PRB: You Cannot Change the Data Source for a PivotTable in Excel for an Analysis Services Connection
PRB: SQL Server Agent Does Not Start and Displays Error 18456
INF: Understanding and Resolving SQL Server 7.0 or 2000 Blocking Problems
INF: SQL Server 7.0 Security Update for Service Pack 4
INF: SQL Server 2000 Security Update for Service Pack 2
INF: SQL Logs 17832 with Multiple TCP\IP Connection Requests
INF: Object Ownership Chain Checking Across Databases Depends on Database Ownership
INF: Moving SQL Server 7.0 Databases to a New Server with BACKUP and RESTORE
INF: List of Bugs Fixed by SQL Server 7.0 Service Packs
INF: List of Bugs Fixed by SQL Server 2000 Windows CE Edition 1.1 Service Packs
INF: List of Bugs Fixed by SQL Server 2000 Service Packs
INF: How to Obtain the Latest SQL Server 7.0 Service Pack
INF: How to Obtain the Latest SQL Server 2000 Windows CE Edition 1.1 Service Pack
INF: How to Obtain the Latest SQL Server 2000 Service Pack
INF: Conditions for Stored Procedure Recompilation
INF: Available White Papers for SQL Server
HOWTO: Use Excel with SQL Server Linked Servers and Distributed Queries
HOW TO: Troubleshoot Error 15401
FIX: Upgrade from SQL Server 7.0 May Abort with Messages.sql and You Cannot Connect to SQL Server
FIX: IE 5.0 Hinders SQL Server 7.0 Wizards and Tabbed Dialogs on Windows 95 or 98 Computers
Embedded SQL for C Application Fails When It Experiences a Lock Timeout Error
BUG: Using the Auto_Fix Option with sp_change_users_login Can Leave Security Vulnerabilities
BUG: SQL Server May Not Listen on TCP/IP Sockets When TCP/IP is the Only Protocol

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

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

Changing Times
Itzik Ben-Gan
Calculating dates and times doesn't have to be tricky
The ABCs of Bcp
Curt A. Gilman
A step-by-step primer for bcp novices
Creating SQL Server 2000 Virtual Directories
Ken Getz
Automate this vital process and simplify user support by using the SQLVDir object
Metamodel for Reservations System
Michelle A. Poole
Keep tabs on customers, resources, and employees
Using SQL Server Agent to Manage a Batch Process
Brian Moran
We have an UPDATE trigger that occasionally triggers a lengthy batch process that's encapsulated in a stored procedure. The code works, but the process that issues the UPDATE statement can't continue until the trigger is complete. Can we return control to the process that issues the UPDATE statement without waiting for the trigger and its batch process to finish?
Placing a Clustered Index on an Integer Column
Richard Waymire
I have a table that holds about 60 million rows. The primary key is an integer column that I maintain by using a NextID table. Because no columns in the table are subject to a range search, I chose a clustered index to maximize the performance of joins to other tables and to avoid the development of disk hotspots. The clustered index also helps me avoid insert problems by distributing the data evenly among the company's RAID 10 set. I have several questions
Migrating from Oracle to SQL Server
Vyas
In Microsoft public newsgroups, I've been observing a recent increase in the number of questions that deal with migrating from Oracle to SQL Server. It is not an easy task to migrate your Oracle database and applications to SQL Server, as there are major architectural differences between SQL Server and Oracle. Further, Oracle's PL/SQL is vastly different from Microsoft's Transact-SQL (T-SQL).
Using Check Constraints
Robert Marda
Check constraints can be added to a table to enforce specific rules on one or more columns. By using check constraints you can specify a valid range of values for a specific column or group of columns. When placing check constraints you should always have it check to ensure that all existing values are valid. By default when you add or create a check constraint it will check all existing values unless you use the keywords WITH NOCHECK

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

ПОЛЕЗНОСТИ

Вышла в свет новая версия утилиты SQLExecMS (1.5.2.0).
Вы можете скачать ее с сайта www.laplas-soft.com

SQLExecMS это утилита позволяющая упростить повседневные обязанности DBA и разработчиков, использующих MS SQL Server(7.0, 2000) или MSDE. SQLExecMS не требует никакой дополнительной установки, просто скопируйте файл себе на диск и работайте. Она НЕ использует SQLDMO, что увеличивает скорость работы на порядок по сравнению с EM.

Используя эту программу Вы можете:

- просматривать и редактировать данные в таблицах
- выполнять T-SQL выражения (PRINT и некоторые DBCC команды не поддерживаются)
- просматривать готовые к использованию скрипты создания для любых объектов из базы данных
- просматривать estimated execution plan для любых SQL выражений
- управлять триггерами
- управлять индексами
- просматривать и контролировать статистики индексов
- просматривать фрагментацию индексов в графическом и текстовом режимах
- просматривать и контролировать фрагментацию таблиц
- искать вхождение подстроки в скрипте базы данных
- генерировать скрипт для базы данных, включая содержимое таблиц, пользователей и роли
- просматривать и контролировать активные соединения к SQL серверу
- сравнивать скрипы двух БД
- просматривать объекты зависимые от указанного и объекты от которых он зависит
- просматривать ближайших соседей данной таблицы, связанных внешними ключами
- манипулировать с логинами и пользователями
- просматривать лог ошибок SQL сервера
- просматривать использование дискового пространства занятого БД, таблицами и индексами
- просматривать блокировки
- работать с БД: создавать, удалять и проч.
- просматривать и изменять параметры баз данных и сервера
- регистрировать и удалять Extended хранимые процедуры

и многое, многое другое, например: сохранять рекордсет в TXT, XML, XLS и HTML форматах, генерировать "INSERT INTO" скритпы...

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

ФОРУМ SQL.RU

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

Книга по SQL [new]
Новость No.2 - FTP SQL.RU [new]
Используете ли вы CASE средства [new]
триггер один на всех
Почему транзакции не строятся в очередь в merge репликации [new]
тестовые вопросы по Windows администрированию [new]
Вложенные ХП
Пропал connect с MS SQL 7 у всех юзеров !!!!!!!!!!!
Select с переменным количеством в WHERE
Большие объемы данных
ПОМОГИТЕ!!! Задолбала одна ОШИБКА!!! [new]
exec и временные таблицы
Помогите SQL20002 + 1C неделю Бъюсь
Помогите разобраться с max() (уж очень тормозит)
Выбор оптимального способа реплицирования по Dial Up
Удаление Guest из master [new]
DBCC SHOWCONTIG
Пустой рекордсет
Сравнение структуры БД
Анонс. Новая версия SQLExecMS.
Connect в ERwin
Голову сломал! Помогите
Ищу функцию преобразование денежной суммы в пропись
для информации
Удаление поля c autoincrement
Поиск "дырок" в последовательности ключей
Не уже ли в 200 раз?
Что с курсором? [new]
чудеса с шрифтом
Как можно реализовать следущий механизм...
Индексы ?????????
каждый час растет tempdb оставаясь free
Вопрос [new]
Форматирование
Скриптом из QA убил таблицу с данными
Удивительное рядом: почему "плавает" быстродействие
Линк к гадскому ORACLE... Выполнение "его" процедур?!?
Удобный инструментарий для администратора

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

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

MSSQL 2000 with MySQL
Кто-нибудь знает?
SQL oshibki.
Кто знает?

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

#112<<  #113

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

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

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




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

В избранное