Скрипт для переноса пользовательских сообщений

by Alexey Knyazev 18. февраля 2011 00:48

Пользовательские сообщения, как и системные, хранятся в системном представлении sys.messages (master..sysmessages для более ранних версий). Сообщения с идентификаторами, меньшими 50000, являются системными.
Для переноса пользовательских сообщения, написал скрипт, который динамически генерит скрипт для создания этих самых сообщений. Код работает, как для SQL Server 2000, так и выше:


... [Ещё]

Tags: , , , ,

SQL Server

Уровни изоляции и несогласованность данных

by Alexey Knyazev 17. февраля 2011 00:31

Транзакции указывают уровень изоляции, который определяет степень, до которой одна транзакция должна быть изолирована от изменений ресурса или данных, произведенных другими транзакциями. Уровни изоляции описаны с точки зрения того, какие из побочных эффектов параллелизма разрешены (например, «грязные» чтения или фантомные чтения).
Более подробно о всех уровянх изоляции можно прочитать в любой книге по SQL Server и на сайте Майкрософт - http://msdn.microsoft.com/ru-ru/library/ms189122.aspx


А в этой статье хочу поговорить об уровне изоляции READ UNCOMMITTED ( = подсказке NOLOCK ) и несогласованности данных, а так же о чудесах сиквела при уровне изоляции READ COMMITTED (уровень изоляции по умолчанию). [Ещё]

Tags: , , , ,

SQL Server

INSERT + ORDER BY

by Alexey Knyazev 26. января 2011 00:42

Order by


Существует очень раcпространенный миф, что конструкция insert into ... select ... from ... order by ... гарантирует последовательность вставки данных в таблицу согласно условию order by. Но это заблуждение, т.к. мы не можем гарантировать последовательность физической вставки данных. Сиквел сам (по своему, неведанному нам сценарию) определяет, как данные попадут в таблицу, последовательно или параллельно и какими кусками определяет оптимизатор. При этом кляуза (clause) просто игнорируется.
Но существует очень интересная особенность, когда в таблице, в которую осуществляется вставка, есть поле IDENTITY

[Ещё]

Tags: , , , , ,

SQL Server

Чудесный оператор CROSS APPLY

by Alexey Knyazev 22. декабря 2010 01:03

Сегодня я хочу рассказать более подробно об операторе APPLY, а конкретнее о его типе CROSS APPLY. Этот оператор появился впервые в SQL Server 2005, но к сожалению многие так и не научились им пользоваться, возможно это из-за того, что в BOL (SQL Server Books Online) этот оператор плохо описан и имеет очень "сухие" примеры его использования. В этой статье я покажу несколько интересных демонстраций, где этот оператор может пригодиться.

Основная фича оператора заключается в том, что APPLY позволяет вызывать табличную функцию для каждой строки, возвращаемой внешним табличным выражением запроса. Именно этот пример есть в BOL.
Оператор CROSS APPLY возвращает только строки из внешней таблицы, которые создает результирующий набор из возвращающего табличное значение функции. Оператор OUTER APPLY возвращает и строки, которые формируют результирующий набор, и строки, которые этого не делают, со значениями NULL в столбцах, созданных возвращающей табличное значение функцией.

[Ещё]

Tags: , , ,

SQL Server

SQL Server 2008 R2 System Views Map

by Alexey Knyazev 10. декабря 2010 21:47

В свет вышла схема всех связей системных объектов SQL Server 2008R2:

Прямая ссылка на www.microsoft.com/downloads

Для SQL Server 2008, 2005 и 2000 System Views Map можно найти в одном из моих прошлых постов: http://t-sql.ru/post/SystemViewsMap.aspx

[Ещё]

Tags: ,

SQL Server

Job Viewer

by Alexey Knyazev 19. октября 2010 00:07



Прошло почти два года, как я выкладывал небольшую самописную утилиту на ITCommunity.RU, позволяющую мониторить выполнение Job`ов сразу на нескольких серверах БД. Я и подумать не мог, что она окажется такой полезной. За это время я получил несколько писем с просьбой обновить её и добавить поддержку SQL Server 2000. И вот наконец-то руки дошли до этой утилиты.



Эта версия поддерживает SQL Server 7.0/2000/2005/2008/2008R2. Если найдете какие-то ошибки, или у вас возникнут пожелания, связанные с доработкой этой программки, то пишите, постараюсь дополнить её полезным функционалом.
[Ещё]

Tags: , , , , ,

SQL Server

SQL Server требует постоянно перезагрузку

by Alexey Knyazev 14. июня 2010 00:48

Ошибка с которой и мне пришлось столкнуться, при установке SQL Server либо SP, требовалась перезагрузка, но после перезагрузки сообщение появлялось опять:


Rule "Restart computer" failed.
A computer restart is required. You must restart this computer before installing SQL Server.


Решается проблема достаточно просто, правкой реестра: Находим ветку "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations" и удаляем или переименовываем ключ PendingFileRenameOperations


 


Этого должно быть достаточно, но если и это не поможет, то проделайте теже действия с ключами ещё пары веток реестра:



  • "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet001\Control\Session Manager\PendingFileRenameOperations"

  • "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet002\Control\Session Manager\PendingFileRenameOperations"


После этого можно продолжить установку SQL Server.

[Ещё]

Tags: , ,

SQL Server

SQL Server Management Studio зависает

by Alexey Knyazev 12. мая 2010 01:47

Периодически на форумах возникает вопрос, подобный этим:



  • "Почему SQL Server Management Studio так медленно работает?"

  • "SSMS постоянно виснет"

  • "Почему Management Studio так долго открывается/закрывается".


Для решения подобных проблем, предлагаю проделать кое какие действия:



1. Убедитесь, что ваша рабочая станция соответствует всем минимальным требованиям, как в плане "железа", так и софта, для работы SSMS (SQL Server Management Studio)
Например для удовлетворительно работы Microsoft® SQL Server® 2008 Management Studio Express потребуется:



Системные требования



  • Поддерживаемые операционные системы: Windows 7; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Server 2008 R2; Windows Vista; Windows Vista Service Pack 1; Windows XP Service Pack 2; Windows XP Service Pack 3

  • 32-разрядные системы: компьютер, оборудованный процессором Intel или совместимым процессором с тактовой частотой 1 ГГц или выше (рекомендуется 2 ГГц или выше, поддерживается только один процессор)

  • 64-разрядные системы: процессор с тактовой частотой 1,4 ГГц или выше (рекомендуется 2 ГГц или выше, поддерживается только один процессор)

  • Минимальный объем ОЗУ 512 МБ (рекомендуется 1 ГБ или более)

  • 1 ГБ свободного места на диске



2. Посмотрите версию вашего клиента ( "Help" -> "About" ), возможно стоит обновиться до последнего SP (сервис пака) или существует SQL Server Hotfix, который может решить ваши проблемы. Список доступных версий можно посмотреть по ссылке http://www.t-sql.ru/page/versions.aspx.



3. Возможно какое-то из Ваших приложений «мешает» работе SSMS, например антивирус, убедитесь, что он верно настроен.


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


5. Запретите загрузку помощи из сети: "Tools" -> "Options" -> "Help" -> "Online" укажите "Try local first, not online".



6. Отключите проверку аннулированных сертификатов в "Internet Explorer" -> "Tools" -> "Internet Options" -> "Advanced" и снять «галки» с Check for server certificate revocation и Check for publisher's certificate revocation
(Подробнее: http://msmvps.com/blogs/gladchenko/archive/2007/01/16/497463.aspx)



7. Отключите отображение экрана-заставки при открытии среды SQL Server Management Studio. Правой кнопкой мыши по ярлыку SSMS и в свойствах добавьте параметр "nosplash" (http://msdn.microsoft.com/ru-ru/library/ms162825(SQL.100).aspx).



8. Отключите автосохранение в реестре (ключ AutoRecover Enabled), ибо SSMS фоново сохраняет информацию ( HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\100\Tools\Shell\General\AutoRecover ).


9. Определите значения переменных %vsspv_visualstudio_dir% и %vsspv_vs_install_directory% , либо в реестре явно укажите пути для параметров DefaultSettingsDirectory и LastResetSettings ( HKCU\Software\Microsoft\Microsoft SQL Server\100\Tools\Shell\Profile ).
Например:
"%USERPROFILE%\My Documents\SQL Server Management Studio\Projects"
и
"%USERPROFILE%\Мои документы\SQL Server Management Studio\Common7\IDE\Profiles\sqlshell.vssettings"
соответственно.



10. Сам не пробовал, но рекомендуют заменить видеокарту, возможно, это поможет, если ни один из пунктов выше не решил ваших проблем.

[Ещё]

Tags: , , ,

SQL Server

Мой SQL Server отличный переводчик

by Admin 17. марта 2010 12:42

Совсем недавно у меня появилась безумная идея: как организовать автоматический перевод текстов внутри сервера БД.


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


Мой выбор пал на переводчик Microsoft® Translator (http://www.microsofttranslator.com/)

[Ещё]

Tags: , , , ,

SQL Server

Своё шифрование в SQL Server 2005 и выше

by Alexey Knyazev 9. марта 2010 11:57

Практически в любой отрасли существуют свои критические данные, которые требуют шифрования. Начиная с SQL сервера версии 6.x, для шифрования данных вы можете применять функцию ENCRYPT (в последних версия эта функция уже недоступна), которая использует тот же метод (шифрования), что и опция WITH ENCRYPTION.


Начиная с SQL Server 2000 появилась недокументированная функция PWDENCRYPT, которая возвращает Хэш пароля (PWDENCRYPT — это устаревшая функция, которая может не поддерживаться в будущих версиях SQL Server. Вместо этого используйте программу HASHBYTES. HASHBYTES предоставляет больше алгоритмов хэширования), а так же PWDCOMPARE - Хэширует пароль и сравнивает хэш с хэшем существующего пароля.


Для более сложного шифрования данных до версии SQL Server 2005 приходилось "изобретать велосипед", но начиная с 9ой версии шифрование и дешифровка стали встроенным функционалом. А в SQL Server 2008 появилось прозрачное шифрование.


Но в очередной раз попробуем изобрести велосипед и организовать своё шифрование данных в виде CLR-сборки.

[Ещё]

Tags: , , , , ,

SQL Server