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

MS SQL Server

  Все выпуски  

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


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

#039<<#040

СОВЕТ

Не документированные расширенные хранимые процедуры
По материалам статьи Alexander Chigrik на swynk.com «Useful undocumented extended stored procedures»

Александр пишет, что расширенные хранимые процедуры – это DLL, которые выполняются непосредственно в адресном пространстве SQL сервера и используют SQL Server Open Data Services API. Вы можете написать собственную расширенную хранимую процедуру на языке программирования C. Вы можете выполнять расширенные хранимые из Query Analyzer, как обычные хранимые процедуры. Расширенные хранимые процедуры используются для расширения возможностей SQL сервера.
В этой статье, Александр представляет некоторых полезные, не документированные расширенные хранимые процедуры, которые Вы можете использовать при работе с SQL Server 7.0/2000.

Sp_Msgetversion

Эта хранимая процедура используется для получения текущей версии SQL сервера. Пример её использования:

EXEC master..sp_MSgetversion

Примечание. Между прочим, более распространённый способ получения текущей версии SQL сервера (выдаётся большее количество информации), это использование следующей конструкции:

select @@version

Xp_dirtree

Эта хранимая процедура используется для получения списка всех подкаталогов для текущего каталога. Чтобы получить все подкаталоги из C:\MSSQL7, выполните:

EXEC master..xp_dirtree 'C:\MSSQL7'

Вот результат на машине Александра:

subdirectory       depth
---------------          -----------
Binn                     1
Resources           2
1033                      3
DevTools            1
Include                2
Lib                        2
Data                      1
Install                   1
HTML                  1
Books                   1
LOG                      1
JOBS                     1
BACKUP             1
REPLDATA        1
FTP                       2

Xp_enum_oledb_providers

Эта хранимая процедура может использоваться, чтобы получить список всех OLE DB провайдеров. Xp_enum_oledb_providers возвращает Provider Name, Parse Name и Provider Description. Чтобы получить список всех OLE DB провайдеров выполните:

EXEC master..xp_enum_oledb_providers

Xp_enumcodepages

Эта хранимая процедура используется для получения списка всех кодовых страниц, наборов символов и их описаний. Пример её использования:

EXEC master..xp_enumcodepages

Xp_enumdsn

Эта хранимая процедура возвращает список всех DSN систем и их описания. Чтобы получить список DSN систем, выполните:

EXEC master..xp_enumdsn

Xp_enumerrorlogs

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

EXEC master..xp_enumerrorlogs

Вот результат на машине Александра:

Archive #    Date
-----------      ------------------
6                  02/27/2001 08:00
5                  03/04/2001 22:46
4                  03/05/2001 22:28
3                  03/08/2001 10:32
2                  03/10/2001 00:06
1                  03/10/2001 23:29
0                  03/11/2001 18:58

Xp_enumgroups

Эта хранимая процедура возвращает список групп Windows NT и их описание. Чтобы получить список групп Windows NT, выполните:

EXEC master..xp_enumgroups

Xp_fileexist

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

EXECUTE xp_fileexist filename [, file_exists INT OUTPUT]

Чтобы проверить, существует ли файл boot.ini на диске c: или нет, выполните:

EXEC master..xp_fileexist 'c:\boot.ini'

Вот результат на машине Александра:

File Exists         File is a Directory         Parent Directory Exists
--------------        ------------------------        ------------------------------
1                         0                                     1

Xp_fixeddrives

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

EXEC master..xp_fixeddrives

Вот результат на машине Александра:

drive        MB free
------        -----------
C              12082
D              396
E               793
F               46

Xp_getnetname

Эта хранимая процедура возвращает WINS имя SQL сервера, с которым Вы связаны. Пример её использования:

EXEC master..xp_getnetname

Вот результат на машине Александра:

Server Net Name
---------------------
CHIGRIK

Xp_readerrorlog

Эта, хранимая процедура возвращает содержание errorlog файла. Вы можете найти этот файл в каталоге C:\MSSQL7\Log, куда он помещается по умолчанию. Чтобы видеть текст errorlog файла, выполните:

EXEC master..xp_readerrorlog

Xp_regdeletekey

Эта хранимая процедура удалит ключ из системного реестра. Вы должны использовать её очень осторожно. Пример её использования:

EXECUTE xp_regdeletekey [@rootkey=]'rootkey',
                    [@key=]'key'

Чтобы удалить SOFTWARE\Test из раздела HKEY_LOCAL_MACHINE, выполните:

EXECUTE master..xp_regdeletekey
                    @rootkey='HKEY_LOCAL_MACHINE',
                    @key='SOFTWARE\Test'

Xp_regdeletevalue

Эта хранимая процедура удалит установленное значение ключа системного реестра. Вы должны использовать её очень осторожно. Пример её использования:

EXECUTE xp_regdeletevalue [@rootkey=]'rootkey',
                    [@key=]'key',
                    [@value_name=]'value_name'

Чтобы удалить значение TestValue для ключа SOFTWARE\Test из HKEY_LOCAL_MACHINE, выполните:

EXEC master..xp_regdeletevalue
                    @rootkey='HKEY_LOCAL_MACHINE',
                    @key='SOFTWARE\Test',
                    @value_name='TestValue'

Xp_regread

Эта хранимая процедура используется, чтобы читать из системного реестра. Пример её использования:

EXECUTE xp_regread [@rootkey=]'rootkey',
                    [@key=]'key'
                    [, [@value_name=]'value_name']
                    [, [@value=]@value OUTPUT]

Чтобы прочитать значение переменной @test из TestValue в ключе SOFTWARE\Test раздела HKEY_LOCAL_MACHINE, выполните:

DECLARE @test varchar(20)
EXECUTE master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
                    @key='SOFTWARE\Test',
                    @value_name='TestValue',
                    @value=@test OUTPUT
SELECT @test

Вот результат на машине Александра:
--------------------
Test

Xp_regwrite

Эта хранимая процедура используется, чтобы записывать в системный реестр. Пример её использования:

EXECUTE xp_regwrite [@rootkey=]'rootkey',
                    [@key=]'key',
                    [@value_name=]'value_name',
                    [@type=]'type',
                    [@value=]'value'

Чтобы записать Test в качестве значения TestValue, ключа SOFTWARE\Test раздела HKEY_LOCAL_MACHINE, выполните:

EXECUTE master..xp_regwrite
                    @rootkey='HKEY_LOCAL_MACHINE',
                    @key='SOFTWARE\Test',
                    @value_name='TestValue',
                    @type='REG_SZ',
                    @value='Test'

Xp_subdirs

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

EXECUTE master..xp_subdirs 'C:\MSSQL7'

Вот результат на машине Александра:

subdirectory
-----------------------
Binn
DevTools
Data
Install
HTML
Books
LOG
JOBS
BACKUP
REPLDATA

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

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

DTS – импорт и экспорт данных

В поставку MS SQL Server 7.0 входит набор специальных средств, которые обеспечивают экспорт и импорт данных, преобразование данных (Data Transformation Services), а также создание и редактирование DTS пакетов (DTS Export/Import Wizard). Кроме того, имеется набор модулей поддержки API прикладных программ, которые позволяют использовать объекты DTS в пользовательских прикладных программах. Задачи управления данными, перемещения их между приложениями и системами, копирование, архивирование и миграция данных, на сегодняшний день являются очень актуальными и требуют отвлечения значительных сил администраторов баз данных. Как правило, перемещение данных между не однородными источниками и местами назначения (например, MS SQL Server – Oracle), сопровождается их промежуточной обработкой или трансформацией. Такие преобразования могут состоять только из простого преобразования типов, а могут и содержать более сложные логические элементы, вплоть до добавления недостающей информации, арифметических вычислений, перекодировки и т.п. Наиболее часто, в задачах импорта/экспорта, приходится изменять формат передаваемых данных, когда они не совпадают в формате хранения источника и места назначения. Например, может потребоваться преобразовать поля, хранящие дату, если формат её хранения различен. Если ваши исходные данные хранятся в нескольких источниках, может потребоваться преобразование и отображение данных, для того, что бы привести их к виду, определённому для места назначения. Наиболее частыми операциями для этого можно считать агрегирование и арифметические операции. Очень важным этапом управления импортируемыми или экспортируемыми данными является обеспечение их согласованности. Поддержка согласованности и связей у источника и места назначения может отличаться. Для обеспечения согласованности данных может потребоваться их преобразование или трансляция в момент передачи. Другой, важной задачей, является проверка достоверности данных. Для решения таких задач используют промежуточные проверки на соответствие передаваемых данных заданным критериям. Кроме непосредственно задач импорта/экспорта данных, SQL Server имеет средства автоматизации этих операций. Например, использование заданий по расписанию может существенно облегчить администратору выполнение типовых задач. Резюмируя вышесказанное, можно выделить несколько моментов, которые должен прояснить для себя DBA, прежде чем приступить к реализации задач импорта/экспорта:

- Где располагаются исходные данные и куда их необходимо перемещать;
- Существует ли разница в форматах исходных данных и данных места назначения;
- Подлежат ли импорту/экспорту объекты базы данных;
- Необходимо ли периодически повторять задачи импорта/экспорта;
- Как проще осуществлять импорт/экспорт, с помощью запросов T-SQL или применяя имеющийся графический интерфейс средств администрирования;
- Какой уровень производительности необходим для эффективного использования импорта/экспорта.

Теперь рассмотрим, какие средства импорта/экспорта входят в состав MS SQL Server 7.0 и какую функциональность они обеспечивают:

- Для простого перемещения и преобразования данных используют DTS Import Wizard и DTS Export Wizard. Эти мастера предназначены для создания DTS пакетов в интерактивном режиме.
- Если необходимо перемещать данные разных типов или из нескольких источников или данные должны быть подвергнуты сложной трансформации, и если Вы опытный DBA, вы можете использовать DTS Designer.
- Если источником и потребителем DTS пакетов являются MS SQL Server 7.0 серверы, или если кроме таблиц, Вам необходимо передавать: представления, хранимые процедуры, параметры по умолчанию, правила, пользовательские типы данных, учётные записи, роли, индексы или ограничения, Вам понадобится DTS Object Transfer.
- Если Вам нужно быстро и без преобразований «залить» в базу большой объём данных из текстового файла, лучше всего подойдёт средство DTS Bulk Insert, основанное на операторе BULK INSERT из состава T-SQL.
- Существует и специальная программа BCP, которая запускается из командной строки. С помощью этой программы удобно экспортировать, а потом импортировать данные из таблиц MS SQL Server 7.0 или импортировать данные из текстовых файлов в ASCII формате.

Кроме перечисленных выше средств, для передачи данных между серверами, можно использовать механизм репликаций, что удобно в случае частого изменения содержащейся в базе информации. Такой подход позволяет копировать схему и сами таблицы, а также определения и вызовы хранимых процедур из исходной базы в базу назначения. Также, для импорта/экспорта, используются некоторые операторы T-SQL и системные хранимые процедуры, такие, как: SELECT INTO, INSERT SELECT, BULK INSERT, BACKUP, RESTORE, sp_attach_db и sp_detach_db.

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

ПОЛЕЗНОСТИ

Для обсуждения различных аспектов баз данных, в частности MS SQL можно подписаться на почтовую конференцию. Для этого достаточно послать пустое письмо с пустой темой по адресу:
sql-ru-subscribe@yahoogroups.com
Статья Михаила Когаловского «Базы данных XML, семантика XML-документов, перспективы» в журнале «Директору информационной службы», #02/2001
http://www.webclub.ru/content/xml/article-598.html
Статья Дмитрия Качаева «MSXML3, первое знакомство». Эта статья посвящена началам работы с Microsoft XML Parser 3.0. Устанавливаем, настраиваем, пробуем...
http://www.softerra.ru/review/technologies/microsoft/7893/
Статья Николая Куртова «Рецепт приготовки интернет-портала». Заварить все в Windows 2000, на быстром IIS 5.0, затем добавить чуть-чуть ASP и пару свежих SQL запросов. Начнем...
http://www.softerra.ru/review/technologies/microsoft/6849/
Статья Николая Куртова «А-ля, А-си, ADO». ActiveX Data Objects. Сегодня вы уже не помните, в каком формате хранятся ваши данные.
http://www.softerra.ru/review/technologies/microsoft/6555/
Статья Юрия Беленького «eXtensible Markup Language. Обзор». Краткий обзор, посвященный одной из самых фундаментальных технологий последнего времени – XML.
http://www.softerra.ru/review/technologies/microsoft/6254/

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

Support WebCast: Multi-instancing in Microsoft SQL Server 2000
Q292588 - PRB: Data Transformation Services May Fail to Import DBCS File Using Fixed Field
Q271509 - INF: How to Monitor SQL Server 2000 Blocking
Q275608 - FIX: Mathematical Operations on Numeric or Decimal Columns with Negative Numbers May Return Unexpected Results
Q251004 - INF: How to Monitor SQL Server 7.0 Blocking
Q251175 - INF: How to Monitor SQL Server 6.5 Blocking
Q252987 - INF: Execute a SQL Server DTS Package from Active Server Pages
Q256650 - INF: How to Shrink the SQL Server 7.0 Transaction Log
Q260182 - BUG: Unable to Restore to a Point in Time in First Transaction Log Backup
Q272439 - PRB: SQL 2000 Profiler Doesn't Capture SHOWPLAN Events if the BinaryData Data Column Is Not Captured
Q279108 - PRB: OSQL Utility Cannot Run Under Hindi Locale/Indic Language Setting on Window 2000
Q285544 - BUG: Dividing 0 by a Negative Decimal or Numeric Number Results in -0
Q292587 - FIX: Stored Procedure xp_sqlagent_proxy_account Returns "The handle is invalid" Error Message
Q291307 - BUG: DTS Message Queue Task May Truncate Messages to 255 Characters
Q289804 - BUG: Dimension Wizard Generates Unusable Custom Rollup Formula with Private Parent-Child Dimension
Q290799 - BUG: Missing Horizontal Scroll Bar in Cube Browser
Q293219 - FIX: Query with Complex Correlated Subquery May Cause Unexpected Results
Q293318 - FIX: Analysis Services DTS Task Gets Timeout Error During Incremental Update
Q271258 - BUG: Original db_datareader Role is Lost if dbuser is Assigned a New db_datawriter Role
Q171221 - INF: List of Version Numbers of ODBC Driver Manager and SQL Server
Q199294 - INF: Server Side Cursor Behavior When CURSOR_CLOSE_ON_COMMIT Set OFF
Q218172 - PRB: Cannot Change SA Password in Enterprise Manager
Q238254 - INF: UPDATE Statements May be Replicated as DELETE/INSERT Pairs
Q237980 - INF: How to Convert an Access Database to SQL Server
Q257434 - INF: Network Library in Existing DSN Replaced by Network Library in New DSN to the Same SQL Server Name
Q259710 - PRB: SQL Server Agent Fails to Start on Windows 9x When You Change the sa Password
Q264170 - FIX: Immediate Updating Subscribers Receive Error Message 7415 When Performing UPDATES and INSERTS
Q275618 - FIX: Cannot Set SQLServerAgent Password to More Than 16 Characters in Enterprise Manager
Q279033 - INF: Identifying Cascading Referential Integrity from SQL Server Profiler
Q278698 - FIX: Exception Access Violation Encountered During Compile of Hash Match Team Plan
Q288319 - PRB: Suboptimal Query Plan Executed When Same Join Predicate Appears on Both Sides of an OR Clause

ИНФОРМАЦИЯ АВТОРА РАССЫЛКИ

Архив рассылки поменял хост и теперь доступен по адресу:
http:/www.sql.ru/subscribe/

#039<<#040


Вопросы, предложения, коментарии, замечания, критику и т.п. присылайте Александру на адрес: 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

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



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

В избранное