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

MS SQL Server

  Все выпуски  

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


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

#206<<  #207

СОДЕРЖАНИЕ

1.СОВЕТЫ
1.1. Недокументированные системные хранимые процедуры SQL Server 2000
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Англоязычные статьи
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа

СОВЕТЫ

Недокументированные системные хранимые процедуры SQL Server 2000

По материалам статьи Alexander Chigrik: SQL Server 2000 Undocumented Stored Procedures
Перевод Виталия Степаненко

В этой статье я хочу рассказать вам про некоторые полезные недокументированные системные хранимые процедуры, поставляемые вместе с SQL Server 2000.

sp_MSget_qualified_name

Эта хранимая процедура используется для получения имени объекта с именем его владельца по переданному id объекта.

Синтаксис:

sp_MSget_qualified_name object_id, qualified_name

где

object_id – id объекта, тип int.

qualified_name – имя объекта с именем его владельца, тип nvarchar(512).

Ниже приведен пример, как можно получить имя объекта с именем его владельца для таблицы authors базы pubs.

USE pubs
GO

DECLARE @object_id int, @qualified_name nvarchar(512)

SELECT @object_id = object_id('authors')

EXEC sp_MSget_qualified_name @object_id, @qualified_name OUTPUT

SELECT @qualified_name

GO

Результирующий набор данных:
--------------------------------------

[dbo].[authors]

sp_MSdrop_object

Эта хранимая процедура используется для удаления объекта с переданным id объекта, именем объекта и именем владельца объекта (объектом может быть таблица, представление, хранимая процедура или триггер). Если передан id объекта, то имя объекта и имя владельца объекта необязательны.

Синтаксис:

sp_MSdrop_object [object_id] [,object_name] [,object_owner]

где

object_id – id объекта, тип int, значение по умолчанию - NULL.

object_name – имя объекта, тип sysname, значение по умолчанию - NULL.

object_owner – имя владельца объекта, тип sysname, значение по умолчанию - NULL.

Ниже приведен пример удаления таблицы titleauthor из базы pubs.

USE pubs
GO

DECLARE @object_id int

SELECT @object_id = object_id('titleauthor')

EXEC sp_MSdrop_object @object_id

GO

sp_gettypestring

Эта хранимая процедура возвращает тип символьного столбца для переданных id таблицы и id столбца.

Синтаксис:

sp_gettypestring tabid, colid, typestring

где

tabid – id таблицы, тип int.

colid – id столбца, тип int.

typestring – строка с описанием типа символьного столбца, тип nvarchar(255). Это возвращаемый параметр.

Ниже приведен пример того, как получить тип символьного столбца для 2 столбца таблицы authors базы pubs.

USE pubs
GO

DECLARE @tabid int, @typestring nvarchar(255)

SELECT @tabid = object_id('authors')

EXEC sp_gettypestring @tabid, 2, @typestring output

SELECT @typestring

GO

Результирующий набор данных:
-------------------------------

varchar(40)

sp_MSgettools_path

Эта хранимая процедура возвращает путь к утилитам и инструментам SQL Server 2000.

Синтаксис:

sp_MSgettools_path install_path

где

install_path – путь установки, тип nvarchar(260). Это возвращаемый параметр.

Ниже приведен пример того, как получить путь к утилитам и инструментам SQL Server 2000.

USE master
GO

DECLARE @install_path NVARCHAR(260)

EXEC sp_MSgettools_path @install_path OUTPUT

SELECT @install_path

GO

Результирующий набор данных:
------------------------------------------------------------

C:\Program Files\Microsoft SQL Server\80\Tools

sp_MScheck_uid_owns_anything

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

Синтаксис:

sp_MScheck_uid_owns_anything uid

где

uid – id пользователя (User ID), тип smallint. id пользователя является уникальным в базе данных.

Ниже приведен пример того, как получить список объектов, владельцем которых является пользователь 1 базы pubs.

USE pubs
GO

EXEC sp_MScheck_uid_owns_anything 1

GO

sp_columns_rowset

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

Синтаксис:

sp_columns_rowset table_name [, table_schema ] [, column_name]

где

table_name – имя таблицы, тип sysname.

table_schema – схема таблицы, тип sysname, значение по умолчанию - NULL.

column_name – имя таблицы, тип sysname, значение по умолчанию - NULL.

Пример:

USE pubs
GO

EXEC sp_columns_rowset 'authors'

GO

sp_fixindex

Эта хранимая процедура может быть использована для исправления ошибок в системной таблице путем пересоздания индекса.

Синтаксис:

sp_fixindex dbname, tabname, indid

где

dbname – имя базы данных, тип sysname.

tabname – имя системной таблицы, тип sysname.

indid - id индекса, тип int.

Примечание. Перед использованием этой хранимой процедуры база данных должна находиться в режиме монопольного использования.

Для получения дополнительной информации воспользуйтесь этой ссылкой:

http://www.windows2000faq.com/Articles/Index.cfm?ArticleID=14051

Пример:

USE pubs
GO

EXEC sp_fixindex pubs, sysindexes, 2

GO

sp_MSforeachdb

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

Например, вы можете использовать эту хранимую процедуру, чтобы выполнить CHECKDB для всех баз данных на вашем сервере.

EXEC sp_MSforeachdb @command1="print '?' DBCC CHECKDB ('?')"

sp_MSforeachtable

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

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

EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"

sp_MShelpcolumns

Эта хранимая процедура возвращает полную схему таблицы, включая длину, тип, имя столбцов, а также информацию, является ли этот столбец вычисляемым.

Синтаксис:

sp_MShelpcolumns tablename [, flags] [, orderby] [, flags2]

где

tablename – имя таблицы, тип nvarchar(517).

flags - flags имеет тип int, значение по умолчанию - 0.

orderby - orderby имеет тип nvarchar(10), значение по умолчанию - NULL.

flags2 - flags2 имеет тип int, значение по умолчанию - 0.

Чтобы получить полное описание столбцов таблицы authors базы pubs, выполните:

USE pubs
GO

EXEC sp_MShelpcolumns 'authors'

GO

sp_MShelpindex

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

Синтаксис:

sp_MShelpindex tablename [, indexname] [, flags]

где

tablename – имя таблицы, тип nvarchar(517).

indexname – имя индекса, тип nvarchar(258), значение по умолчанию - NULL.

flags - flags имеет тип int, значение по умолчанию - NULL.

Чтобы получить описание индексов таблицы authors базы pubs, выполните:

USE pubs
GO

EXEC sp_MShelpindex 'authors'

GO

sp_MShelptype

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

Синтаксис:

sp_MShelptype [typename] [, flags]

где

typename – имя типа данных, тип nvarchar(517), значение по умолчанию - NULL.

flags - flags имеет тип nvarchar(10), значение по умолчанию - NULL.

Чтобы получить информацию обо всех встроенных и пользовательских типах данных в базе pubs, выполните:

USE pubs
GO

EXEC sp_MShelptype

GO

sp_MSindexspace

Эта хранимая процедура возвращает в килобайтах размер индексов определенной таблицы.

Синтаксис:

sp_MSindexspace tablename [, index_name]

где

tablename – имя таблицы, тип nvarchar(517).

index_name – имя индекса, тип nvarchar(258), значение по умолчанию - NULL.

Чтобы определить объем, занимаемый индексами таблицы authors базы pubs, выполните:

USE pubs
GO

EXEC sp_MSindexspace 'authors'

GO

sp_MSkilldb

Эта хранимая процедура устанавливает базу данных в режим SUSPECT и использует DBCC DBREPAIR, чтобы удалить ее. Эту процедуру следует запускать из контекста базы master. Пользуйтесь ею очень осторожно.

Синтаксис:

sp_MSkilldb dbname

где

dbname – имя базы данных, тип nvarchar(258).

Чтобы удалить базу pubs, выполните:

USE master
GO

EXEC sp_MSkilldb 'pubs'

GO

sp_MStablespace

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

Синтаксис:

sp_MStablespace name [, id]

где

name – имя таблицы, тип nvarchar(517).

id - id имеет тип int, значение по умолчанию - NULL.

Чтобы определить объем, занимаемый таблицей authors в базе pubs, выполните:

USE pubs
GO

EXEC sp_MStablespace 'authors'

GO

Результирующий набор данных:

Rows DataSpaceUsed IndexSpaceUsed

----------- ------------- --------------

23 8 32

sp_tempdbspace

Эта хранимая процедура используется для определения общего объема, занимаемого базой данных tempdb. Используется без параметров.

Синтаксис:

sp_tempdbspace

Пример:

EXEC sp_tempdbspace

Результирующий набор данных:

database_name database_size spaceused

------------- ----------------------- -----------------------------

tempdb 9.750000 .562500

sp_who2

Эта хранимая процедура возвращает информацию о текущих пользователях и процессах SQL Server 2000, как и процедура sp_who, но предоставляет более подробную информацию. sp_who2 возвращает CPUTime, DiskIO, LastBatch и ProgramName в дополнение к информации, возвращаемой процедурой sp_who.

Синтаксис:

sp_who [loginame]

где

loginame – логин пользователя. Если не передан, то процедура возвращает информацию по всем активным пользователям SQL Server.

Следующий пример возвращает информацию для логина 'sa':

EXEC sp_who2 'sa'

[В начало]

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

Статьи на русском языке

Microsoft нацелилась на программистов-любителей
Мартин Ла-Моника
Как и ожидалось, во вторник на конференции TechEd Europe в Амстердаме компания представила новое семейство инструментов программирования. Облегченные версии инструментов и база данных призваны расширить проникновение Microsoft в среду студентов и программистов-любителей. В первом полугодии будущего года Microsoft обещает выпустить пакет Express, включающий упрощенные версии продуктов Visual Basic, Visual C#, Visual C++ и Visual J++. К тому же времени компания планирует подготовить бесплатную версию своей СУБД SQL Server Express Edition, а также новый продукт Visual Web Developer 2005 Express Edition для разработки веб-сайтов и веб-сервисов.

[В начало]

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

Save Your Password
Dinesh Asanka
How often have we seen password is saved in plain text? After doing all kinds of security arrangements still we keep the password in plain text. This short article will discuss about how to keep the passwords in somewhat secure way
MDX Essentials: Basic Set Functions: Subset Functions: The Subset() Function
William Pearson
In this lesson, we will conclude our "triptych" of articles exposing set functions that deal specifically with subsets. As we have noted, each function returns a subset of a larger set, as part of its operation. We began the subset functions articles with an examination of the Head() function, then explored Tail() in the last. As we mentioned in our last session, these three functions have much in common in the context of usage and operation; covering them in close proximity allows us to more finely distinguish among them, as well as to become aware of their similarities, and to better exploit the attributes we can leverage to meet specific business needs
Auto-Number and Cumulative sum in SQL Server Query results
Muthusamy Anantha Kumar
SQL Server developers and database architects often find they have a need to sequence query results or generate a cumulative sum for a group of rows in a table. SQL Server does not have a Pseudo row-id similar to other RDBMS
DTS Parallel Processing
Leo Peysakhovich
Recently I faced a task, as a part of regular maintenance, to rebuild all the indexes in the databases. Nothing special, but that instance of SQL Server has anywhere between 200 and 400 databases. Each of them is fairly small but it takes hours to rebuild indexes manually or even using an automated script if performed sequentially. Our company has a 24x7 operation schedule and the less time lost for maintenance processes the better
An Introduction to OLAP in SQL Server 2005
Gail Tieh
Get a preview of the upcoming SQL Server 2005's Business Intelligence suite and find out about the major OLAP components of Analysis Services. If you're a database developer, you've no doubt heard of On-Line Analytical Processing (OLAP) and the advantages of analysis using multi-dimensional, pre-aggregated data. Maybe you've even thought about creating your own multidimensional cubes to give your end users true ad hoc capabilities, including the creation of calculated measures/KPIs. If you've relegated that task to the back burner because it was too complex, you'll be happy to know that SQL 2005 has made the process easier
Reporting Strictly for Developers: Microsoft SQL Server Reporting Services
Anthony Glenwright
Most report design tools attempt to please both developers and non-technical end users by combining high levels of flexibility and power and ease-of-use. This accommodation naturally requires various sacrifices on both sides. With the Reporting Services Report Designer, Microsoft has abandoned this strategy and made a commitment to the developer. The most obvious indicator of this is that the design-time environment has been integrated into Visual Studio rather than it being a standalone application
An Is Null Gotcha
David Poole
There is a very good reason for having user acceptance testing over and above unit testing and formal testing of you code. As a developer, you will test your code for the things that you expect to be trapped. A professional tester will take the functional requirement specification and develop a test script to test that the delivered product conformed to the original specification
Do's and Don'ts in writing SQL queries to be ported to Oracle from SQL Server
ITtoolbox FAQ Team
I'm developing an application in VB with SQL Server as back end and we need to write SQL queries in such that even if the database is ported to Oracle, the SQL queries should run without significant loss of speed and without any compatibility issues. What is a list of dos and don'ts to be followed while writing the SQL queries in stored procedures or in the front-end(VB)?
Seven Showplan Red Flags
Joseph Sack
Do you use Query Analyzer's Graphical Showplan, SHOWPLAN_ALL, or SHOWPLAN_TEXT to performance tune your query statements? Most DBAs use one or all of these tools for troubleshooting query performance
Microsoft's Laguna won't sink Sybase
By Robert Westervelt
When Microsoft announced plans this month for an extensive upgrade to its SQL Server mobile database software, it was the latest attempt by a large DBMS vendor to grab some of the mobile market owned by Sybase Inc
Protecting Microsoft SQL Server Database
Application Security, Inc.
This paper will discuss a number of recently discovered vulnerabilities in Microsoft SQL Server and will demonstrate the techniques used to find these security holes
Stored Procedures are NOT evil... but they can be frustrating!
Kimberly L. Tripp
After a group of RDs started chatting about stored procedures I finally felt like I could join in. Often they talk about .Net and client stuff and well, quite honestly, I don't care what you do with the data...only that I serve it up quickly. Ok, I'm really kidding here but my primary focus is backend server tuning and availability, so when the group started talking about stored procedures, I had to chime in. It all started because someone had blogged that stored procedures are not precompiled and are therefore of no use... which is COMPLETELY wrong. However, the irony is that I don't even believe that they should be compiled (and saved and therefore reused) ALL the time. In fact, a precompiled plan is also an optimized plan and that plan may or may not always be the best plan for every execution....... So, here's a bunch of stuff about sprocs. You definitely want to use them - but use them effectively!!!!
Kicking users out of a database for...
Kimberly L. Tripp
All sorts of purposes: maintenance, rebuilding the database objects, dropping/recreating the database in test environments, changing a state option like readonly (did you know that no users can be using the database when you make this change to RO)....
Use ISO Images Without Burning to Disk
Andy Warren
For those of you who have an MSDN subscription you may have noticed that many of the downloads are now available as ISO images (basically a copy of the data as it exists on disk, sector by sector). Win XP makes short work of burning those images to CD as readable files, but so far burning to DVD directly doesn't seem to be supported. More than that, a lot of time what I want is to just use the files on the machine, I don't need them on CD, so it's just extra work to extract to CD and then copy back to disk.

[В начало]

ФОРУМ SQL.RU

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

Суррогатные или естественные
Дедлоки на индексе при селекте
"for xml explicit" Постоение дерева по id и parent
как отловить #TEMP таблицу при динамическом создании SQL?
Почему ломается репликация?(+)
msdb.sysjobschedules
Импорт таблиц из одной БД в другую. Help!
Размер TempDB
SQL Server тормозит с таблицей>3000000
И опять Index Tuning Wizard
О поведении IDENTITY
Не компелируется
Win 2003: SQL 2000 не стартует под доменной учеткой
Как скопировать запись в таблицу с полем Identity не указывая все названия полей?
Большой журнал транзакций
Обьясните результат запроса???
Опять дедлоки
Блок распределенной транзакции.
Размер страйпа RAID и настройка SQL для 4GB RAM
Гадость при импорте xls-файла в SQLServer в DTS-пакете

[В начало]

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

Toggleitem в Reporting Services
Презентация по DTS
Прикол с BrainBench задачей
Принцип хранения информации в VSS6.0
цикл FOR
SQL Server 2000 Developer Edition & Windows XP
Пропали ole db провайдеры после апгрейда ОС до windows 2003 server

[В начало]

#206<<  #207

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

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

СЕМИНАРЫ
КОНФЕРЕНЦИИ

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



ПУБЛИКАЦИИ
АРХИВ


http://subscribe.ru/
E-mail: ask@subscribe.ru
Адрес подписки
Отписаться

В избранное