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

MS SQL Server

  Все выпуски  

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


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

#207<<  #208

СОДЕРЖАНИЕ

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

СЕМИНАР

Архитектура .NET & Analysis Services

Дата: 5.08.2004г. 18:00
Место: г. Москва. Чапаевский пер., 14. Представительство Microsoft в России и СНГ.
Доклады:

1. Архитектура .NET приложений . Алексей Федоров

2. Реализация неагрегируемых мер в Analysis Services 2000. Алексей Шуленин

3. Особенности реализации учетных задач в условиях существенной динамики бизнес-процессов. Андрей Гордиенко

Для регистрации на семинар, пришлите письмо в свободной форме на адрес gladchenko @ sql . ru (пробелы нужно убрать), с указанием Вашей фамилии, имени и отчества (полностью).

Количество мест в аудитории семинара ограничено, поэтому прошу Вас не откладывать регистрацию.

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

Для того, что бы пройти в помещение проведения семинара, при себе необходимо иметь паспорт или другое удостоверение личности.

Карта проезда в представительство Microsoft

[В начало]

СОВЕТЫ

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

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

В этой статье я хочу рассказать вам о недокументированных системных таблицах, которые поставляются вместе с SQL Server 2000. Эти таблицы используются некоторыми системными хранимыми процедурами, и большинство из них хранится в базе данных master (только системные таблицы sysfiles1, sysproperties и sysfulltextnotify хранятся в каждой базе данных).

syscursorcolumns

Хранит список столбцов курсора. Эта таблица находится в базе данных master. Таблица syscursorcolumns используется системной хранимой процедурой sp_describe_cursor_columns для получения свойств столбцов результирующего набора данных серверного курсора.

Название столбца Тип данных Описание
cursor_handle int Уникальный идентификатор курсора в пределах сервера.
column_name sysname, nullable Имя столбца. NULL, если столбец был указан без использования выражения AS.
ordinal_position int Относительное положение столбца. Первый столбец имеет значение 1. Значение для любого скрытого столбца - 0.
column_characteristics_flags int

Битовая маска, позволяющая увидеть информацию, хранящуюся в DBCOLUMNFLAGS в OLE DB.

Может содержать следующие значения:

1 = Bookmark

2 = столбец с фиксированной длиной

4 = столбец может содержать значение NULL

8 = Row versioning

16 = изменяемый столбец (значение устанавливается для столбцов курсора без выражения FOR UPDATE, у курсора может быть только один такой столбец).

column_size int Наибольший возможный размер для хранения значения в этом столбце.
data_type_sql smallint Числовое обозначение типа данных SQL Server столбца.
column_precision tinyint Максимальная точность столбца, аналогично значению bPrecision в OLE DB.
column_scale tinyint Количество знаков справа от запятой у типов данных numeric и decimal, аналогично значению bScale в OLE DB.
order_position int Если столбец является частью сортировки результирующего набора данных, то хранится положение столбца в ключе сортировки относительно самого левого столбца.
order_direction varchar(1), nullable

A = столбец входит в ключ сортировки и отсортирован по возрастанию.

D = столбец входит в ключ сортировки и отсортирован по убыванию.

NULL = столбец не входит в ключ сортировки.

hidden_column smallint Если значение 0, то столбец виден в списке выбора. Значение 1 зарезервировано для использования в будущем.
columnid int ID базового столбца. Если столбец результирующего набора данных построен на основании выражения, то columnid равен -1.
objectid int ID базовой таблицы столбца. Если столбец результирующего набора данных построен на основании выражения, то objectid равен -1.
dbid int ID базы данных, в которой находится базовая таблица столбца. Если столбец результирующего набора данных построен на основании выражения, то dbid равен -1.
dbname sysname, nullable Имя базы данных, в которой находится базовая таблица столбца. Если столбец результирующего набора данных построен на основании выражения, то dbname равно NULL.

syscursorrefs

Хранит по одной записи на каждый серверный курсор. Эта таблица находится в базе данных master и содержит имя курсора, область видимости курсора (локальный или глобальный), и идентификатор курсора. Таблица syscursorrefs используется системными хранимыми процедурами sp_describe_cursor, sp_describe_cursor_columns, sp_describe_cursor_tables и sp_cursor_list для получения имени курсора, его области видимости и идентификатора.

Название столбца Тип данных Описание
reference_name sysname, nullable Имя, используемое для ссылок на курсор.
cursor_scope tinyint

1 = локальный курсор

2 = глобальный курсор

cursor_handl int Уникальный идентификатор курсора в пределах сервера.

syscursors

Хранит свойства серверного курсора. Эта таблица находится в базе данных master. Таблица syscursors table используется системной хранимой процедурой sp_describe_cursor для получения свойств серверного курсора и системной хранимой процедурой sp_cursor_list для получения свойств открытых в настоящий момент серверных курсоров.

Название столбца Тип данных Описание
cursor_handle int Уникальный идентификатор курсора в пределах сервера.
cursor_name sysname, nullable Имя курсора.
status int

Те же значения, что выдаются системной функцией CURSOR_STATUS:

1 = курсор открыт. Если курсор типа insensitive, static или keyset, то он имеет по крайней мере одну строку. Если курсор динамический, то результирующий набор данных имеет ноль или больше строк.

0 = курсор открыт, но не имеет ни одной строки. Динамические курсоры никогда не возвращают это значение.

-1 = курсор закрыт.

-2 = курсор, присвоенный переменной, не существует. Применяется только к курсорным переменным. Этот случай возможен, например, если возвращаемый параметр присвоил переменной курсор, а хранимая процедура закрыла курсор перед возвратом управления из этой процедуры.

-3 = курсор или курсорная переменная не существуют, или курсорная переменная не имеет курсора.

model tinyint 1 = Insensitive (или static)
2 = Keyset
3 = Dynamic
4 = Fast Forward
concurrency tinyint 1 = Read-only
2 = Scroll locks
3 = Optimistic
scrollable tinyint 0 = Forward-only
1 = Scrollable
open_status tinyint 0 = курсор закрыт
1 = курсор открыт
cursor_rows decimal(10,0) Количество строк в результирующем наборе данных.
fetch_status smallint

Статус последней выборки из курсора:

0 = выборка произошла успешно.

-1 = произошла ошибка при выборке или выборка вышла за границы курсора.

-2 = строка выборки не найдена.

-9 = ни одной выборки из курсора еще не было произведено.

column_count smallint Количество столбцов в результирующем наборе данных.
row_count decimal(10,0) Количество строк, измененных последней операцией над курсором.
last_operation tinyint

Последняя операция, выполненная над курсором:

0 = ни одна операция не была выполнена над курсором.

1 = OPEN

2 = FETCH

3 = INSERT

4 = UPDATE

5 = DELETE

6 = CLOSE

7 = DEALLOCATE

syscursortables

Хранит базовые таблицы серверного курсора. Эта таблица хранится в базе данных master. Таблица syscursortables используется системная хранимая процедура sp_describe_cursor_tables для получения базовых таблиц серверного курсора.

Название столбца Тип данных Описание
cursor_handle int Уникальный идентификатор курсора в пределах сервера.
table owner sysname, nullable ID владельца таблицы.
table_name sysname, nullable Имя базовой таблицы.
optimizer_hints smallint

Битовая маска, состоящая из:

1 = блокировка уровня строки (ROWLOCK)

4 = блокировка уровня страницы (PAGELOCK)

8 = блокировка уровня таблицы (TABLOCK)

16 = эксклюзивная блокировка уровня таблицы (TABLOCKX)

32 = блокировка изменения (UPDLOCK)

64 = отсутствие блокировки (NOLOCK)

128 = опция быстрого чтения первых записей (FASTFIRST)

4096 = опция повторяемого чтения, когда используется с курсором (HOLDLOCK)

lock_type smallint

Тип блокировки, которая выполняется явно или неявно над каждой базовой таблицей курсора. Возможные значения:

0 = нет блокировки

1 = разделяемая блокировка

3 = блокировка обновления

server_name sysname, nullable Имя присоединенного сервера, на котором находится таблица. Имеет значение NULL, если используются OPENQUERY или OPENROWSET.
objectid int ID таблицы. Имеет значение 0, если используются OPENQUERY или OPENROWSET.
dbid int ID базы данных, которой принадлежит таблица. Имеет значение 0, если используются OPENQUERY или OPENROWSET.
dbname sysname, nullable Имя базы данных, которой принадлежит таблица. Имеет значение NULL, если используются OPENQUERY или OPENROWSET.

sysfiles1

Хранит по одной записи на каждый файл в базе данных. Каждая база данных содержит системную таблицу sysfiles1.

Column name Data type Description
status int Для внутреннего использования.
fileid smallint Идентификационный номер файла, уникальный в базе данных.
name nchar(128) Логическое имя файла.
filename nchar(260) Имя физического устройства, включая полный путь к файлу.

sysfulltextnotify

Хранит полнотекстовые примечания каталога. Таблица sysfulltextnotify используется системными хранимыми процедурами sp_fulltext_database, sp_fulltext_catalog, sp_fulltext_tableand и sp_fulltext_column. Каждая база данных содержит системную таблицу sysfulltextnotify.

Название столбца Тип данных Описание
tableid int ID таблицы.
rowinfo smallint Для внутреннего использования.
ftkey varbinary(482) Полнотекстовое значение ключа.

syslocks

Хранит информацию об активных блокировках. Эта таблица оставлена только для совместимости, она была заменена на syslockinfo.

Название столбца Тип данных Описание
id int ID таблицы.
dbid smallint ID базы данных.
page int Номер страницы.
type smallint

Тип блокировки:

1 = эксклюзивная блокировка таблицы

2 = разделяемая блокировка таблицы

3 = эксклюзивная блокировка намерения (выполнит страничную блокировку указанных страниц)

4 = разделяемая блокировка намерения

5 = эксклюзивная блокировка страницы

6 = разделяемая блокировка страницы

7 = блокировка обновления страницы (заменяется на эксклюзивную блокировку, если страница действительно модифицируется)

8 = эксклюзивная блокировка экстента

9 = блокировка обновления экстента

11 = блокировка следующего экстента

12 = блокировка предыдущего экстента

К любому из вышеперечисленных типов блокировок может быть добавлено значение 256 (0x100). Это означает, что блокировка заблокировала другого пользователя.

257 = блокирование эксклюзивной блокировки таблицы

265 = блокирование блокировки обновления экстента

spid smallint ID процесса, инициировавшего блокировку.

sysproperties

Хранит расширенные свойства, которые могут быть добавлены для различных объектов в базе данных. Расширенные свойства являются новой особенностью SQL Server 2000. Расширенные свойства могут быть использованы для хранения заголовка таблицы, представления или столбца, для хранения маски ввода данных в столбец, для хранения правил форматирования для отображения данных в столбце, и т.д. Таблица sysproperties используется системными хранимыми процедурами sp_droptype, sp_validatepropertyinputs, sp_addextendedproperty, sp_updateextendedproperty, sp_dropextendedproperty и sp_revokedbaccess для управления расширенными свойствами, и системной функцией fn_listextendedproperty для получения значения существующего расширенного свойства. Каждая база данных содержит системную таблицу sysproperties.

Название столбца Тип данных Описание
id int ID расширенного свойства.
smallid smallint ID типа данных, или ID столбца, или ID пользователя, или ID индекса.
type tinyint Тип расширенного свойства.
name sysname Установленное пользователем имя расширенного свойства.
value sql_variant, nullable Значение расширенного свойства. Может содержать до 7,500 байт данных.

sysxlogins

Хранит каждую учетную запись пользователя Windows NT или имя группы и каждый логин SQL Server. Эта таблица хранится в базе данных master.

Название столбца Тип данных Описание
srvid smallint, nullable ID сервера.
sid varbinary(85), nullable Идентификатор безопасности.
xstatus smallint Для внутреннего использования.
xdate1 datetime Дата, когда был добавлен логин.
xdate2 datetime Дата, когда логин был изменен.
name sysname, nullable Логин.
password varbinary(256), nullable Пароль пользователя (может иметь значение NULL).
dbid smallint ID базы данных.
language sysname, nullable Язык пользователя по умолчанию.
isrpcinmap smallint, nullable Для внутреннего использования.
ishqoutmap smallint, nullable Для внутреннего использования.
selfoutmap smallint, nullable Для внутреннего использования.

[В начало]

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

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

Анализатор конфигурации SQL Server
Брайан Моран
MSSQLServer: За последние несколько лет технические решения стали такими сложными, что одному человеку невозможно знать все детали каждого инструмента, входящего в комплексное решение. В то же время, предприятия не могут содержать армию специалистов высокой квалификации по каждому из компонентов системы. Поэтому так важно широко распространять рекомендательные документы, в которых описано, как просто, эффективно и рационально развернуть решение. Еще полезнее иметь инструменты, автоматизирующие часть сложных заданий. В новом анализаторе оптимальных решений SQL Server Best Practices Analyzer (BPA) от Microsoft объединены информация по оптимизации и инструментарий проверки, который поможет реализовать решения оптимальным способом...
Секреты Delphi. TClientDataset в двухуровневых приложениях. Часть 3
Сергей Бердачук
Delphi: Наконец настало время первых опытов. К сожалению, не удалось найти оригинальный код демонстрационных компонент Дана Мишера, так что придется воспользоваться созданной несколько лет назад на их базе компонентой TBS_ClientDataset....
Использование базы данных в качестве хранилища запросов и настроек клиентских приложений
Сергей Востриков, Денис Мигачев
Delphi: Рано или поздно большинство разработчиков приходят к тому, чтобы делать свои приложения как можно более простыми для определенных модификаций без требования перекомпиляции всей программы. Если это касается работы с базами данных, то, как правило, программисты начинают выносить запросы во внешние текстовые файлы или хотя бы сохраняют настройки пользовательского интерфейса во внешних файлах конфигурации. Этот подход, однако, имеет свой недостаток: при изменении настроек приходится копировать их на все рабочие места. Поэтому следующим этапом создания более гибких многопользовательских приложений является перенос подобных вещей в базу данных. Используя InterBase и Firebird при помощи FIBPlus, мы получаем в руки готовый механизм, называемый FIBPlus Repository....

[В начало]

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

Inside SQL Server: Indexing and Locking
Kalen Delaney
One of the most touted new features of SQL Server 7.0 is its ability to do true row-level locking. By locking only the data that is being processed, instead of an entire page containing numerous rows, SQL Server 7.0 drastically reduces blocking problems. (Blocking occurs when one user or application needs a lock on an object, but another user or application already has an incompatible lock on the object.) However, row-level locking alone can't solve all blocking problems. You still need to add appropriate indexes to your tables
Tutorial: Designing Your First Report in SQL Server Reporting Services
Brian Knight
Trying to get past the Microsoft SQL Server Reporting Services learning curve? Well never fret, this article is a first in a series of tutorials to walk you through creating a practical report for your company to monitor your SQL Server’s databases. In this sample report, we’re going to create a job monitoring system. Specifically, we’re going to connect to our SQL Server and report if the jobs succeeded or failed the last time they ran
Tutorial: Adding Conditional Formatting into Reporting Services
Brian Knight
Last week, we discussed how to create your first report in Microsoft SQL Server Reporting Services. The report we created was a status report on SQL Server Agent jobs. That article can be found here: http://www.sqlservercentral.com/columnists/bknight/designingyourfirstreportinreportingservices.asp. The report we created was from the template and was very crude looking because of it. In this short article, we’re going to look at improving that report and answer a common newsgroup question I see. This week, we’re going to set the rows of the report to alternate colors. In other words, row 1 will have a grey background and row 2 will have a white background. This makes your report much more readable. We’ll also change the color of data based on jobs failing or succeeding
Tutorial: Changing the Visibility Objects in Reporting Services
Brian Knight
In the last tutorial in this series of Reporting Services tutorials we added conditional formatting to the report. Now that we’ve created our first report and have added a bit of flare to it, let’s go ahead and make it even cleaner. In this very quick demonstration, we’ll go ahead and change the visibility of rows or columns based on given conditions
Introduction to MSSQL Server 2000 Analysis Services: Creating a Dynamic Default Member
William Pearson
As most of us that work with MSAS are aware, dimensions as defined in Analysis Services contain many properties, one of which is the default member. The default member can have far-reaching effects from the perspective of information consumers, because they are often not even aware of the property, usually cannot control it, and would not likely relish controlling it even if they could. Yet the default member affects the results of their reporting and analysis ambitions because it "fills in the blanks" with regard to the setting of any unspecified dimensions in the MDX queries that they generate, be it from enterprise reporting systems, the Pivot Table Service (for example, within the new Excel OLAP add-in, which I plan to discuss in a subsequent article), or through any other vehicle they use to query an MSAS cube
Moving the Tempdb and Master Database in SQL Server
Steven Warren
There have been many occasions where I found it necessary to move the database and log files to different drives to increase performance. When you want to move a typical user database to a different drive for performance or to split out the logs, you run sp_detach and sp_attach to perform the move. However, when it comes to moving the Master and Tempdb database, different rules apply. In this article, we are going to walk you through the process of moving these databases
Bits in SQL Server
Muthusamy Anantha Kumar
The objective of this article is to analyze and understand how SQL Server uses Binary digits for categorizing and how to query such categorized binary numbers to produce detailed results
SQL Server 2000 Security - Part 7 - Statement and Object Permissions
Marcin Policht
SQL Server 2000 offers a number of security mechanisms that impose predefined levels of control over database objects and operations. We have discussed the most common of them, such as server and database roles, in the previous articles of this series. While they are convenient and easy to manage, their main drawback is lack of flexibility. The best recourse for such limitation is the use of much more granular and flexible object and statement permissions
Microsoft's Virtual PC 2004
Inc. InformIT.
I've reviewed several tools that claim to help you manage and control SQL Server databases. Today, I'll look at a product that can help you with the platform on which SQL Server runs
Comparison of Oracle Drivers
Haidong Ji
Because Analysis Service is bundled with SQL Server for free, many companies built data warehouses and OLAP cubes on top of SQL Server. DBAs usually use DTS to get data from Oracle and dump it into SQL Server for DSS and OLAP analysis
Add Images to SQL Server
Jason Beres
Drag images from the file system over a WinForms PictureBox and trap their file information when you drop them. Drag-and-drop is one of the most productive computer features since the Apple Lisa. You're sure to keep your users happy if you implement drag-and-drop features in your applications. In this article, I'll show you several cool and useful tricks. First, I'll demonstrate how to drag images from the file system over a Windows Forms PictureBox control and trap the file information for the images when you drop them. From there, I'll discuss how to add the images from the file system to a SQL Server database. I've coined the end product the "Cool and Fancy Image Manager" (or just "Image Manager" for short), and I've included a figure that shows you what it looks like (see Figure 1). I won't go into the internals about drag-and-drop or image manipulation, but will teach you practical ways to apply some effective user interface (UI) techniques, as well as some other good stuff along the way
Build SQL Server Reports Quickly
Stacia Misner
Use the SQL Server Report Designer's wizards for a streamlined solution to setting up, designing, polishing, and publishing reports
Think like a DBA
Andy Warren
I've been managing a small development team for a few months now and one of the more interesting comments has been that I think like a DBA, not a developer. This usually comes about whenever I offer a solution that is more sql based than 'code' based. This article will take about one particular instance. Will be interesting to see what comments are posted!
The Bowling Challenge
Andy Warren
I wrote an article recently (Is all code really code? One question from an interview) that discusses why I think developers look at TSQL as being "different" than "real" code. The article definitely provoked a good discussion, you may find it interesting just for that part alone. So what about you, SQL reader? While I don't argue that you should use the correct tool for the task, are you capable of writing something more than the average insert, update, and delete stored procedures? Is that a challenge?!
Is all code really code? One question from an interview
Andy Warren
When we hire new employees (at my day job) we start with a phone interview. I've got a list of a couple dozen questions we run through that give us an idea of whether we should consider bringing the person in for a more in depth interview. While a discussion of those questions is probably worth an article in itself, we'll stick closer to SQL today and talk about just one of the questions I ask of candidates for senior developer positions
SQL Server 2000 Security - Part 5 (Application roles)
Marcin Policht
In our previous article, we started our discussion about SQL Server 2000 authorization, focusing initially on permissions assigned to standard fixed server and database roles. We also explained that on the database level, SQL Server 2000 provides more flexibility, since it allows you to define your own custom roles, with the help of the sp_addrole stored procedure (or via graphical interface of SQL Server Enterprise Manager). In addition to these standard roles, which control access to SQL Server and database objects on per-login and per-user basis respectively, you also have available database-level application roles, which control access to database objects and operations on per-application basis. This is most commonly used in client-server scenarios, where a client application is invoked by multiple clients and direct database access (outside of the application) by the same clients needs to be prevented.
The Failure of Relational Database, The Rise of Object Technology and the Need for the Hybrid Database
InterSystems Corporation
When first introduced in the late 1960s, object technology was revolutionary. By the late 1980s it was becoming mainstream, for good reasons. Not only did it simplify interface development, it provided a more flexible and capable way to deal with data that fundamentally changed the way applications are built. Instead of representing data in rigid tables the way relational databases do, object technology describes data in terms of classes. An object is an instance of a class in the same way that a specific oak tree is an instance of the class of “oak trees”.
Verifying input to be passed to a SQL statement
Serdar Yegulalp
Web pages are commonly used as front-ends for input to be passed to a SQL query, as well as ways to return results from a query. Many Web programmers are not accustomed to how input should be passed to a SQL statement, however, and often forget that data cannot be passed as-is to a SQL statement without some pre-processing

[В начало]

ФОРУМ SQL.RU

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

Новость No.2 - FTP SQL.RU
Зависан ие транзакции....
Дисковая подсистема - как лучше?
выполнить truncate table
Уровни изоляции. Вопрос.
OFF: Перевод терминов
Текст ошибки по ее номеру? (@@error)
Можно ли оптимизировать запрос на UPDATE?
генерация случайного числа
Создать триггер и избежать рекурсии
Как скопировать запись в таблицу с полем Identity не указывая все названия полей?
размер кластерного индекса
Книга по Reporting Service
Win2003: SQL 2000 не стартует под доменной учеткой
Установил MDAC 2.8 RTM но всё равно требует 2000 Client Tools :(
Размер страйпа RAID и настройка SQL для 4GB RAM
Подсобите с запросом. Заклинило что-то.
union+where c пустым запросом или IF
Как из ADO вызывать server-side cursors?
Обновление данных на клиенте в реальном времени

[В начало]

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

Данные из Share Point
PageBreak в Reporting Service
Reporting services и DLL
Dataprotector MSSQL 2000 integration
Хочу подключить Accessовскую базу к MS SQL 2K
Четвертая встреча группы разработчиков на платформе Microsoft в Петербурге
dial-up соединие для репликации
bol2005 - видели?
Как выполнять SQL запросы содержащие for XML Explicit из командной строки через ADO?
Reporting Services & InfoPath
Утилита SQLExecMS v2.1.
ищу DBArtisan
Реализация алгоритма
изучение sql
Вопрос по Maintenance Plan!

[В начало]

#207<<  #208

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

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

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

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



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


http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное