Я не знаю как можно ее описать....
Наверное словами: ее нет. Мы просто проехали оба погранпоста, почти не сбавляя скорости.
На российской скороне кажется не было даже пограничников. Уже не помню это все было 29-го декабря.
Белоруская сторона просто махнула жезлом чтоб не тормозил, скорость была где-то 30-50км/ч.
понедельник, 31 декабря 2012 г.
ОТДЫХ : Граница Россия - Беларусь
вторник, 25 декабря 2012 г.
MSSQL : Уровни изоляции в MS SQL - REPEATABLE READ
Начнем с определений:
Определение INTUIT
REPEATABLE READ – повторяющееся чтение. Повторное чтение строки возвратит первоначально считанные данные, несмотря на любые обновления, произведенные другими пользователями до завершения транзакции. Тем не менее на этом уровне изоляции возможно возникновение фантомов. Его установка реализуется командой:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
Определение WIKIPEDIA
Уровень, при котором чтение одной и той же строки или строк в транзакции дает одинаковый результат. (Пока транзакция не завершена, никакие другие транзакции не могут модифицировать эти данные.)
Определение Microsoft
REPEATABLE READ - Указывает на то, что инструкции не могут считывать данные, которые были изменены, но еще не зафиксированы другими транзакциями, а также на то, что другие транзакции не могут изменять данные, читаемые текущей транзакцией, до ее завершения.
Разделяемые блокировки применяются ко всем данным, считываемым любой инструкцией транзакции, и сохраняются до ее завершения. Это запрещает другим транзакциям изменять строки, считываемые текущей транзакцией. Другие транзакции могут вставлять новые строки, соответствующие условиям поиска инструкций, содержащихся в текущей транзакции. При повторном запуске инструкции текущей транзакцией будут извлечены новые строки, что приведет к считыванию фантома. Учитывая то, что разделяемые блокировки сохраняются до завершения транзакции и не снимаются в конце каждой инструкции, степень совпадений ниже, чем при уровне изоляции по умолчанию READ COMMITTED. Используйте этот аргумент только в случае необходимости.
Ужасные определения! Фантомы, блокировки, транзакции... Намешана каша... Конечно я понимаю что значит эта блокировка, но когда пытаюсь вникнуть в эти определения, то крыша легонько едет. Давайте попробуем вместе разобраться, что к чему. Начнем с основного - cоздадим таблицу и заполним ее.
IF (OBJECT_ID('tmp_isolation_level') IS NOT NULL) DROP TABLE [dbo].[tmp_isolation_level]
GO
CREATE TABLE [dbo].[tmp_isolation_level] ( [rowid] int IDENTITY (1,1), [textvalue] varchar (100))
GO
INSERT INTO [dbo].[tmp_isolation_level] ([textvalue])
SELECT '111111111111'
UNION ALL
SELECT '222222222222'
UNION ALL
SELECT '333333333333'
UNION ALL
SELECT '444444444444'
UNION ALL
SELECT '555555555555'
UNION ALL
SELECT '666666666666'
GO
Теперь приступим в практическому изучению что будет происходить :)
Повторяющееся чтение нам гарантирует неизменность уже прочитанных данных, до завершения транзакции. Т.е. если параллельный запрос попытается их изменить, то это действие будет заблокировано ядром базы, например:
Поток 1 | Поток 2 | Комментарий |
---|---|---|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
|
Устанавливаем уровень изоляции. В данном примере нам не важно какой уровень изоляции будет на 2-м потоке, поэтому я использую значение по умолчанию или "READ COMMITTED" |
BEGIN TRANSACTION |
BEGIN TRANSACTION
|
Открываем транзакции |
SELECT
*
FROM[tmp_isolation_level]
|
- | Читаем таблицу в первом потоке (тут все хорошо) |
- |
SELECT *
FROM [tmp_isolation_level]
|
Читаем таблицу во втором потоке (тут все хорошо) |
- |
update [tmp_isolation_level]
|
Пытаемся внести изменения в данные, во втором потоке. В этом месте 2-й запрос блокируется 1-м и ожидает завершения транзакиции 1-го потока |
COMMIT TRANSACTION
|
- | Завершение транзакции 1-го потока разблокирует ресурс (таблицу). Записываются изменения 1-го потока |
- |
update [tmp_isolation_level]
|
Выполняется разблокированный UPDATE |
- |
COMMIT TRANSACTION
|
Завершение транзакции 2-го потока, записываются изменения 2-го потока |
Теперь предлагаю рассмотреть немного другой пример, тут мы проследим что произойдет если изменения будут вноситься в 1-м потоке.
Поток 1 | Поток 2 | Комментарий |
---|---|---|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
|
Устанавливаем уровень изоляции |
BEGIN TRANSACTION
|
BEGIN TRANSACTION
|
Открываем транзакции |
SELECT *
FROM [tmp_isolation_level]
|
- | Читаем таблицу в первом потоке (тут все хорошо) |
- |
SELECT *
FROM [tmp_isolation_level]
|
Читаем таблицу во втором потоке (тут все хорошо) |
UPDATE [tmp_isolation_level]
|
- |
Пытаемся внести изменения в данные, в первом потоке, но данные являются заблокированными в этом месте 1-й запрос блокируется 2-м и ожидает завершения транзакиции 2-го потока |
- |
UPDATE [tmp_isolation_level]
|
Хорошо, пробуем внести изменения данных во 2-м потоке. НО, для 2-го потока данные тоже заблокированы.... |
Сообщение 1205, уровень 13, состояние 45, строка 2
|
- |
В одном из потоков вылетает ошибка о взаимоблокировке. Т.е. 1-й и 2-й потоки заблокировали друг друга. Ядро базы обнаруживает этот факт, прерывает один из потоков, и завершает второй. Прерваный поток завершается с откатом изменений (ROLLBACK TRANSACTION) |
- |
COMMIT TRANSACTION
|
Прерывание 1-го потока разблокирует 2-й, а он в свою очередь завершается без ошибок. |
- |
Выполнение команд успешно завершено.
|
- |
Вот так, вкратце работает REPEATABLE READ.
Успехов вам на поприще программирования SQL.
Источники:
Уровни изоляции в ядре СУБД (MSDN)
SET TRANSACTION ISOLATION LEVEL (Transact-SQL) (MSDN)
Настройка уровня изоляции транзакции (MSDN)
Уровень изолированности транзакций (Википедия)
Уровни изоляции и несогласованность данных (T-SQL.RU)
Уровни изоляции транзакций в SQL. Шпаргалка (Arbinada.com)
Уровни изоляции транзакций в SQL («Мир ПК» , № 07, 2009)
понедельник, 24 декабря 2012 г.
МЕНЕДЖМЕНТ : Организационная политика
Поскольку люди не склонны расставаться с властью и влиянием, процесс сборки превращается в политическую игру. Это порождает бессчетные дискуссии о том, кто и какие будет иметь права и обязанности в интересах процесса сборки. Во время таких дискуссий обнажаются все негативные политические тенденции в организации.
Ревнители чистоты воскликнут, что политические устремления достойны только осуждения и им надо всячески препятствовать: работа, мол, достаточно трудна с технической точки зрения и без «загрязнения» ее политикой. Однако в большинстве организаций желание устранить политику не обязательно приводит к ее реальному устранению. Политика – это неотъемлемая часть окружающего нас реального мира, и с ней приходится иметь дело. Вы должны пройти через этот этап, каким бы неприятным он ни казался.Политика политике рознь
С моей точки зрения, политика политике рознь. С одной стороны, есть «хорошая политика»– нечто сродни понятию «честной борьбы» – и здоровый политический процесс может и должен помогать принимать правильные решения. С другой стороны, существует «плохая политика», в результате которой цели и действия организации могут подчиниться карьерным интересам отдельных личностей, и политику такого сорта необходимо затаптывать на корню. И конечно же, есть еще проблема «серой зоны» – зоны между «хорошим» и «плохим».
пятница, 21 декабря 2012 г.
ОТДЫХ : Получение визы (чать 2)
Сегодня жена съездила и получила наши визы.
По разговорам в очереди я помню, что народ упоминал то что в Литовском посольстве забывают выдать визу на ребенка. У нас все обошлось, все нормально, жалоб нет:).
МЕНЕДЖМЕНТ : Изучайте языки программирования
Странный заголовок, не правда ли?
Казалось бы, это не связанные вещи, но я ITшник по первому образованию и по роду своей деятельности.
Я продолжаю читать книгу Джо Мораско, IT проекты: фронтовые очерки.
Седьмая глава в которой названа : написание кода. Суть этой главы можно свести к нескольким фразам:
Изучайте языки с которыми работают ваши подчиненные, это позволит сократить технологическое отставание Вас как руководителя группы, позволит вести понятный диалог между Вами и программистами.
Для изучения языка используйте стандартные задачи, которые Вам уже приходилось решать, у автора это игра "угадай животное", у меня это поиск и сортировка, у Вас что-то свое.
Знаете мне также приходилось сталкиваться с различными языками программирования, например, Basic, Pascal/Object Pascal/Delphi, C/C++/C#, Perl, PHP и мой любимый SQL.
Я вспоминаю как еще в 1997 году занялся изучением Pascal, для глубокого погружения мною была написана игра "Монополия".
Для реализации мне пришлось изучить работу с графикой, прерывания, для подключения мышки, реализовать простой ИИ, и тогда мне не было еще и 15 лет.
В то время я думал что могу все. На такое глубокое погружение у меня тогда ушло где-то 2 месяца.
Дальше был C и C++, тут было и проще и сложнее, задачей я выбрал реализацию нескольких сортировок и поисков в массиве. Тоже использовал графику для визуализации сравнения скорости поиска, для создания интерактивого взаимодействия с пользователем реализовывал меню, как графическое, так и текстовое.
И так далее и тому подобное....
Сейчас я в основном пишу на SQL по работе, а для себя что-нибудь на Perl/PHP/C++, просто чтобы не терять навык.
Что и Вам советую.
Тестируем Blogger - андроид клиент для блога
Добрался до повторного тестирования Blogger'а на Android.
Судя по всему были исправлены баги при работе с русским языком и это сообщение тому лишнее подтверждение, дополненное фотографией.
Однако, редактировать текст в самом редакторе blogger уже не получится, так как он хранится в кодах utf.
ОТДЫХ : Получение визы
1. Загранпаспорт, со сроком действия не менее 3-х месяцев, до даты выезда из страны.Все выше перечисленное было нами сдано в консульский отдел Литовской Республики. Хочу еще обратить внимание, что если вы хотите ехать в "сезон", например на новый год, подъезжайте к посольству хотябы часам к 7 утра, и то не факт что Вам удастся попасть. Я приехал где-то в 6:30 и если бы не помощь знакомых оказался бы в очереди 30+. Ссылки:
2. Общегражданский паспорт нам не понадобился
3. Для ребенка свидетельство о рождении и его ксерокопия
4. Свидетельство о браке и его ксерокопия
5. Цветная матовая фотография, 35x45.
6. Страховой полис, на запрашиваемый период.
7. Если едете на автомобиле, то гринкард и его копия, аналог нашей ОСАГО, но для заграницы.
8. Расширение каско и его копия, если делали (это вообще не обязательно)
9. Подтверждение об оплате гостиницы и подтверждение о бронировании
10. 35/70€ на человека (консульский сбор для детей до 12 лет не взымается)
11. Заявление о выдаче визы
12. Выписка со счета, чек из банкомата не подходит.
13. Фотографию надо наклеить на заявление
1. Документы для получения визы.
2. Категории лиц, которые освобождены от уплаты консульского сбора.
МЕНЕДЖМЕНТ : 10 мыслей об управления командами
1. Сосредоточте внимание на сколачивание сильной команды, способной решать сложные задачи и создавать реальную дополнительную ценность для клиента.И добавлю тоже цитату из книги:
2. Лидеры вдохновляют, менеджеры обеспечивают. Что бы быть одновременно хорошим лидером и хорошим менеджером, необходимо уметь передавать общую концепцию продукта и разбираться в деталях
3. Готовьтесь к проблемам и устраняйте их в зародыше.
4. Не ленитесь внимательно выслушивать людей, но не принимайте их мнение слишком близко к сердцу.
5. Сосредоточтесь на фактах.
6. Старайтесь укрепить стабильность, играя роль не усилителя, а демпферрирующего звена.
7. Никогда не объясняйте злонамереностью, то что можно объяснить некомпетентностью.
8. Развивайте чувство юмора в противовес напряженномму стремленью: относитесь к работе серьезно, а к себе - с легким сердцем.
9. Не ограничивайте свою жизнь работой и прочитывайте 25 книг в год.
10. Доверяйте своим инстинктам: если к чему-то не лежит душа, то это может быть неспроста.
Если изложенные здесь 10 мыслей показались вам собранием случайных безделиц, то так оно и есть. Менеджмент и лидерство– все еще виды искусства, а не науки.
MSSQL : Использование EXECUTE
Сегодняшний день, не стал исключением.
Полистал немного книгу SQL Server 2012 Data Integration Recipes автор Адам Аспин и обнаружил что оказывается еще в 2005-м SQL было внесено интересное изменение по синтаксису команды EXECUTE
INSERT INTO dbo.MyOracleTable
EXEC ('SELECT * FROM SCOTT.EMP') AT MyOracleDatabase;
О том что можно линкованный сервер передавать как элемент команды я и не знал.....
Ну что ж 15$ за книгу уже не пропали зря :)
четверг, 30 августа 2012 г.
Юмор : Комментарии к интервью Онищенко о запрете курения в "Ну, погоди" -))
А за ними кот задом наперед (ст.213 Хулиганство)
А за ним комарики На воздушном шарике(ст.211 Угон воздушного судна;
ст. 271 Нарушение правил международных полетов)
А за ними раки на хромой собаке (ст. 245 Жестокое обращение с животными) ...
Едут и смеются,пряники жуют (ст.212 Массовые беспорядки; ст.264
Нарушение правил дорожного движения и эксплуатации транспортных
средств) ...
Волки от испуга скушали друг друга (ст.110 Доведение до самоубийства)
Бедный крокодил жабу проглотил (ст.107 Убийство совершенное в
состоянии аффекта) ...
И сказал Гиппопотам крокодилам и китам:
Кто злодея не боится и с чудовищем сразится
Я тому богатырю двух лягушек подарю
И еловую шишку пожалую (ст.291 Дача взятки; ст. 280 Публичные призывы
к осуществлению экстремистской деятельности.)
Не боимся мы его, великана твоего
Мы зубами, мы клыками, мы копытами его!
И веселою гурьбой звери кинулись в бой. (ст.279 Вооруженный мятеж;
ст.282.1 Организация экстремистского сообщества)
четверг, 23 августа 2012 г.
MSSQL : Статистика используемого пространства таблицами
Пришлось не так давно выяснять, почему база в которой и данных то почти нет, съела 250Гб...
Выяснили с помощью вот этого скрипта.
SELECT
[o].[id]
, OBJECT_NAME([o].[id], DB_ID()) AS [table_name]
, [i1].[rowcnt] AS [rows]
, (ISNULL(SUM([i1].[reserved]), 0) + ISNULL(SUM([i2].[reserved]), 0)) * [ps].[pagesizeKB] AS [reservedKB]
, (ISNULL(SUM([i1].[dpages]), 0) + ISNULL(SUM([i2].[used]), 0)) * [ps].[pagesizeKB] AS [dataKB]
, ((ISNULL(SUM([i1].[used]), 0) + ISNULL(SUM([i2].[used]), 0))
- (ISNULL(SUM([i1].[dpages]), 0) + ISNULL(SUM([i2].[used]), 0))) * [ps].[pagesizeKB] AS [index_sizeKB]
, ((ISNULL(SUM([i1].[reserved]), 0) + ISNULL(SUM([i2].[reserved]), 0))
- (ISNULL(SUM([i1].[used]), 0) + ISNULL(SUM([i2].[used]), 0))) * [ps].[pagesizeKB] AS [unusedKB]
FROM [sys].[sysobjects] [o]
LEFT OUTER JOIN [sys].[sysindexes] [i1] ON [i1].[id] = [o].[id] AND [i1].[indid] < 2
LEFT OUTER JOIN [sys].[sysindexes] [i2] ON [i2].[id] = [o].[id] AND [i2].[indid] = 255
CROSS JOIN (SELECT ([low] / 1024) [pagesizeKB] FROM [master].[dbo].[spt_values] WHERE [number] = 1 AND [type] = 'E' ) AS [ps]
WHERE OBJECTPROPERTY([o].[id], N'IsUserTable') = 1 --same as: [o].xtype = 'IsView'
OR (OBJECTPROPERTY([o].[id], N'IsView') = 1 AND OBJECTPROPERTY([o].[id], N'IsIndexed') = 1)
GROUP BY [ps].[pagesizeKB], [o].[id], [i1].[rowcnt]
ORDER BY 3 DESC
суббота, 18 августа 2012 г.
1C : Пример творческого подхода, к решению проблем.
пятница, 17 августа 2012 г.
Linux : Calculate Linux
четверг, 16 августа 2012 г.
MSSQL : Исследования - sys.databases
Содержит одну строку для каждой базы данных в экземпляре Microsoft SQL Server.
Если участник, вызывающий sys.databases, не является владельцем базы данных и база данных не master или tempdb, минимально требуемыми разрешениями для просмотра соответствующей строки являются разрешения уровня сервера ALTER ANY DATABASE или VIEW ANY DATABASE, или разрешение CREATE DATABASE в базе данных master. Определить базу данных, к которой подключен участник, можно в таблице sys.databases.Если база данных не находится в режиме ONLINE или параметр AUTO_CLOSE установлен в ON, значения некоторых столбцов могут быть равны NULL. Если база данных находится в режиме OFFLINE, соответствующая строка не будет видна пользователям с недостаточными правами доступа. Чтобы увидеть соответствующую строку в случае, когда база данных находится в режиме OFFLINE, пользователю необходимо иметь, по крайней мере, разрешение уровня сервера ALTER ANY DATABASE или разрешение CREATE DATABASE в базе данных master.
Имя столбца |
Тип данных |
Описание |
||||
name |
Имя базы данных, уникальное внутри экземпляра SQL Server. |
|||||
database_id |
Идентификатор базы данных, уникальный внутри экземпляра SQL Server. |
|||||
source_database_id |
Не NULL = идентификатор базы данных-источника данного моментального снимка базы данных.
NULL = моментальный снимок не базы данных. |
|||||
owner_sid |
varbinary(85) |
SID (идентификатор безопасности) внешнего владельца базы данных, зарегистрированного на сервере. | ||||
create_date |
Дата создания или переименования базы данных. Для базы данныхtempdb это значение изменяется каждый раз при перезапуске сервера. | |||||
compatibility_level |
Целое число, которое соответствует версии SQL Server, для которой поведение совместимо:
90
100
110
NULL — база данных не находится в режиме «в сети», либо параметр AUTO_CLOSE установлен в ON, и база данных закрыта. |
|||||
collation_name |
Параметры сортировки для базы данных. Действует как параметры сортировки по умолчанию для базы данных.
NULL — база данных не находится в режиме «в сети», либо параметр AUTO_CLOSE установлен в ON, и база данных закрыта. |
|||||
user_access |
Установка доступа пользователя:
0 = указано MULTI_USER.
1 = указано SINGLE_USER;
2 = указан RESTRICTED_USER. |
|||||
user_access_desc |
nvarchar(60) |
Описание установки доступа пользователя:
MULTI_USER
SINGLE_USER
RESTRICTED_USER |
||||
is_read_only |
1 = база данных находится в режиме READ_ONLY
0 = база данных находится в режиме READ_WRITE |
|||||
is_auto_close_on |
1 = параметр AUTO_CLOSE находится в состоянии ON
0 = параметр AUTO_CLOSE находится в состоянии OFF |
|||||
is_auto_shrink_on |
1 = параметр AUTO_SHRINK находится в состоянии ON
0 = параметр AUTO_SHRINK находится в состоянии OFF |
|||||
состояние |
Состояние базы данных
0 = ONLINE
1 = RESTORING
2 = RECOVERING
3 = RECOVERY_PENDING
4 = SUSPECT
5 = EMERGENCY
6 = OFFLINE
|
|||||
state_desc |
nvarchar(60) |
Описание состояния базы данных:
ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
EMERGENCY
OFFLINE
Дополнительные сведения см. в разделе Состояния базы данных. |
||||
is_in_standby |
База данных доступна только для чтения для журнала восстановления. |
|||||
is_cleanly_shutdown |
1 = база данных закрыта верно; восстановление при запуске не требуется
0 = база данных закрыта неверно; требуется восстановление при запуске |
|||||
is_supplemental_logging_enabled |
1 = SUPPLEMENTAL_LOGGING в состоянии ON
0 = SUPPLEMENTAL_LOGGING в состоянии OFF |
|||||
snapshot_isolation_state |
Состояние транзакций изоляции моментальных снимков, задаваемое при помощи параметра ALLOW_SNAPSHOT_ISOLATION.
0 = изоляция моментальных снимков в состоянии OFF (по умолчанию). Изоляция моментальных снимков запрещена.
1 = изоляция моментальных снимков в состоянии ON. Изоляция моментальных снимков разрешена.
2 = изоляция моментальных снимков в состоянии перехода в состояние OFF. Для всех транзакций записываются изменения. Нельзя запустить новые транзакции, использующие изоляцию моментальных снимков. База данных находится в состоянии перехода в состояние OFF до тех пор, пока все транзакции, активные при выполнении инструкции ALTER DATABASE, не будут завершены.
3 = изоляция моментальных снимков в состоянии перехода в состояние ON. Для новых транзакций записываются изменения. Транзакции не могут использовать изоляцию моментальных снимков до тех пор, пока состояние изоляции моментальных снимков не перейдет в 1 (ON). База данных находится в состоянии перехода в состояние ON до тех пор, пока все транзакции, активные при выполнении инструкции ALTER DATABASE, не будут завершены. |
|||||
snapshot_isolation_state_desc |
nvarchar(60) |
Описание состояния транзакций изоляции моментальных снимков, задаваемое при помощи параметра ALLOW_SNAPSHOT_ISOLATION:
OFF
ON
IN_TRANSITION_TO_ON
IN_TRANSITION_TO_OFF |
||||
is_read_committed_snapshot_on |
1 = параметр READ_COMMITTED_SNAPSHOT установлен в значение ON. Операции чтения с уровнем изоляции read-committed основаны на просмотре моментальных снимков и не запрашивают блокировок.
0 = параметр READ_COMMITTED_SNAPSHOT установлен в значение OFF (по умолчанию). Операции чтения с уровнем изоляции read-committed используют разделяемые блокировки. |
|||||
recovery_model |
Выбранная модель восстановления:
1 = FULL
2 = BULK_LOGGED
3 = SIMPLE |
|||||
recovery_model_desc |
nvarchar(60) |
Описание выбранной модели восстановления:
FULL
BULK_LOGGED
SIMPLE |
||||
page_verify_option |
Значение параметра PAGE_VERIFY:
0 = NONE
1 = TORN_PAGE_DETECTION
2 = CHECKSUM | |||||
page_verify_option_desc |
nvarchar(60) |
Описание значений параметра PAGE_VERIFY:
NONE
TORN_PAGE_DETECTION
CHECKSUM |
||||
is_auto_create_stats_on
|
1 = AUTO_CREATE_STATISTICS
в
состоянии
ON
0 = AUTO_CREATE_STATISTICS
в
состоянии
OFF
|
|||||
is_auto_update_stats_on
|
1 = AUTO_UPDATE_STATISTICS
в
состоянии
ON
0 = AUTO_UPDATE_STATISTICS
в
состоянии
OFF
|
|||||
is_auto_update_stats_async_on
|
1 = AUTO_UPDATE_STATISTICS_ASYNC
в
состоянии
ON
0 = AUTO_CREATE_STATISTICS_ASYNC
в
состоянии
OFF
|
|||||
is_ansi_null_default_on
|
1 = ANSI_NULL_DEFAULT в состоянии ON
0 = ANSI_NULL_DEFAULT в состоянии OFF
|
|||||
is_ansi_nulls_on
|
1 = ANSI_NULLS в состоянии ON
0 = ANSI_NULLS в состоянии OFF
|
|||||
is_ansi_padding_on
|
1 = ANSI_PADDING в состоянии ON
0 = ANSI_PADDING в состоянии OFF
|
|||||
is_ansi_warnings_on
|
1 = ANSI_WARNINGS
в
состоянии
ON
0 = ANSI_WARNINGS
в
состоянии
OFF
|
|||||
is_arithabort_on
|
1 = ARITHABORT в состоянии ON
0 = ARITHABORT в состоянии OFF
|
|||||
is_concat_null_yields_null_on
|
1 = CONCAT_NULL_YIELDS_NULL
в
состоянии
ON
0 = CONCAT_NULL_YIELDS_NULL
в
состоянии
OFF
|
|||||
is_numeric_roundabort_on
|
1 = NUMERIC_ROUNDABORT
в
состоянии
ON
0 = NUMERIC_ROUNDABORT
в
состоянии
OFF
|
|||||
is_quoted_identifier_on
|
1 = QUOTED_IDENTIFIER
в
состоянии
ON
0 = QUOTED_IDENTIFIER
в
состоянии
OFF
|
|||||
is_recursive_triggers_on
|
1 = RECURSIVE_TRIGGERS
в
состоянии
ON
0 = RECURSIVE_TRIGGERS
в
состоянии
OFF
|
|||||
is_cursor_close_on_commit_on
|
1 = CURSOR_CLOSE_ON_COMMIT
в
состоянии
ON
0 = CURSOR_CLOSE_ON_COMMIT
в
состоянии
OFF
|
|||||
is_local_cursor_default
|
1 = CURSOR_DEFAULT соответствует локальному курсору
0 = CURSOR_DEFAULT соответствует глобальному курсору
|
|||||
is_fulltext_enabled
|
1 = полнотекстовый режим включен для данной базы данных
0 = полнотекстовый режим отключен для данной базы данных
|
|||||
is_trustworthy_on
|
1 = база данных помечена как надежная
0 = база данных не помечена как надежная
|
|||||
is_db_chaining_on
|
1 = межбазовые цепочки владения в состоянии ON
0 = межбазовые цепочки владения в состоянии OFF
|
|||||
is_parameterization_forced
|
1 = параметризация в состоянии FORCED
0 = параметризация в состоянии SIMPLE
|
|||||
is_master_key_encrypted_by_server
|
1 = база данных имеет главный ключ шифрования
0 = база данных не имеет главного ключа шифрования
|
|||||
is_published
|
1 = база данных является базой данных публикации в топологии репликации транзакций или моментальных снимков
0 = не является базой данных публикации
|
|||||
is_subscribed
|
Данный столбец не используется. Он всегда возвращает 0, независимо от состояния подписчика базы данных.
|
|||||
is_merge_published
|
1 = база данных является базой данных публикации в топологии репликации слиянием
0 = база данных не является базой данных публикации в топологии репликации слиянием
|
|||||
is_distributor
|
1 = база данных является базой данных распространителя в топологии репликации
0 = база данных не является базой данных распространителя в топологии репликации
|
|||||
is_sync_with_backup
|
1 = база данных помечена для синхронизации с резервной копией при помощи репликации
0 = база данных не помечена для синхронизации с резервной копией при помощи репликации
|
|||||
service_broker_guid
|
Идентификатор компонента Service Broker для данной базы данных. Используется как целевой экземпляр
broker_instance
в таблице маршрутизации.
|
|||||
is_broker_enabled
|
1 = брокер в этой базе данных в данный момент отправляет и принимает сообщения.
0 = все отправленные сообщения останутся в очереди передачи, а полученные сообщения не будут помещены в очередь в этой базе данных.
По умолчанию в восстановленных или прикрепленных базах данных брокер отключен.Исключением является зеркальное отображение базы данных, при котором брокер включается после отработки отказа.
|
|||||
log_reuse_wait
|
Действие или объект, ожидаемые в настоящий момент журналом транзакций:
0 = ничего;
1 = контрольная точка;
2 = резервная копия журнала;
3 = активное резервное копирование или восстановление;
4 = активная транзакция;
5 = зеркальное отображение базы данных;
6 = репликация;
7 = создание моментального снимка базы данных;
8 = просмотр журнала;
9 = вторичная реплика Группы доступности AlwaysOn применяет записи журнала транзакций этой базы данных к соответствующей базе данных-получателю;
10 = только для внутреннего использования;
11 = только для внутреннего использования;
12 = только для внутреннего использования;
13 = самая старая страница;
14 = другое (переходное).
|
|||||
log_reuse_wait_desc
|
nvarchar
(60)
|
Описание действия или объекта, ожидаемого в настоящий момент журналом транзакций:
NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
REPLICATION
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
Только для внутреннего использования
Только для внутреннего использования
Только для внутреннего использования
OLDEST_PAGE
OTHER_TRANSIENT
|
||||
is_date_correlation_on
|
1 = DATE_CORRELATION_OPTIMIZATION
в
состоянии
ON
0 = DATE_CORRELATION_OPTIMIZATION
в
состоянии
OFF
|
|||||
is_cdc_enabled
|
1 = в базе данных включена система отслеживания измененных данных. Дополнительные сведения см. в разделе
sys.sp_cdc_enable_db (Transact-SQL)
.
|
|||||
is_encrypted
|
Указывает, зашифрована ли база данных (отражает последнее состояние, установленное с помощью предложения ALTER DATABASE SET ENCRYPTION). Может использоваться одно из следующих значений:
1 = зашифрована;
0 = не зашифрована.
Дополнительные сведения о шифровании баз данных см. в разделе
Прозрачное шифрование данных (TDE)
.
Если база данных находится в процессе расшифровки, столбец
is_encrypted
отображает значение 0.Состояние процесса шифрования базы данных можно просмотреть с помощью динамического административного представления
sys.dm_database_encryption_keys
.
|
|||||
is_honor_broker_priority_on
|
Указывает, учитываются ли в базе данных приоритеты диалогов (отражает последнее состояние, установленное предложением ALTER DATABASE SET HONOR_BROKER_PRIORITY). Может использоваться одно из следующих значений:
1 = HONOR_BROKER_PRIORITY имеет значение ON;
0 = HONOR_BROKER_PRIORITY
имеет
значение
OFF.
|
|||||
replica_id
|
Уникальный идентификатор локальной реплики доступности Группы доступности AlwaysOn группы доступности, если таковая имеется, частью которой является база данных.
NULL = база данных не является частью реплики доступности в группе доступности.
|
|||||
group_database_id
|
Уникальный идентификатор базы данных в группе доступности, в которой участвует база данных, если такая группа имеется. Значение
group_database_id
для этой базы данных совпадает в первичной реплике и в каждой вторичной реплике, для которой база данных присоединена к группе доступности.
NULL = база данных не является частью реплики доступности в любой группе доступности.
|
|||||
default_language_lcid
|
Указывает идентификатор локали (lcid) языка по умолчанию автономной базы данных.
Примечание.
Такие функции, как
Настройка параметра конфигурации сервера «язык по умолчанию»
хранимой процедуры
sp_configure
. Это значение равно
null
для неавтономной базы данных.
|
|||||
default_language_name
|
nvarchar
(128)
|
Указывает язык по умолчанию автономной базы данных.
Это значение равно
null
для неавтономной базы данных.
|
||||
default_fulltext_language_lcid
|
Указывает идентификатор локали (lcid) языка полнотекстового поиска по умолчанию автономной базы данных.
Примечание.
Такие функции, как
Настройка параметра конфигурации сервера «язык полнотекстового поиска по умолчанию»
по умолчанию хранимой процедуры
sp_configure
. Это значение равно
null
для неавтономной базы данных.
|
|||||
default_fulltext_language_name
|
nvarchar
(128)
|
Указывает язык полнотекстового поиска по умолчанию автономной базы данных.
Это значение равно
null
для неавтономной базы данных.
|
||||
is_nested_triggers_on
|
Указывает, разрешены ли вложенные триггеры в автономной базе данных.
0 = вложенные триггеры не разрешены
1 = вложенные триггеры разрешены
Примечание.
Такие функции, как
Настройка конфигурации сервера nested triggers
хранимой процедуры
sp_configure
. Это значение равно
null
для неавтономной базы данных. Дополнительные сведения см. в разделе
sys.configurations (Transact-SQL)
.
|
|||||
is_transform_noise_words_on
|
Указывает должны ли преобразовываться пропускаемые слова в автономной базе данных.
0 = пропускаемые слова не должны преобразовываться.
1 = пропускаемые слова должны преобразовываться.
Примечание.
Такие функции, как
Параметр конфигурации сервера «transform noise words»
хранимой процедуры
sp_configure
. Это значение равно
null
для неавтономной базы данных.Дополнительные сведения см. в разделе
sys.configurations (Transact-SQL)
.
|
|||||
two_digit_year_cutoff
|
Указывает числовое значение в диапазоне от 1753 до 9999, представляющее пороговый год для интерпретации года, представленного двумя цифрами, в виде года, представленного четырьмя цифрами.
Примечание.
Такие функции, как
Настройка параметра конфигурации сервера two digit year cutoff
хранимой процедуры
sp_configure
. Это значение равно
null
для неавтономной базы данных.Дополнительные сведения см. в разделе
sys.configurations (Transact-SQL)
.
|
|||||
containment
|
tinyint
not null
|
Указывает состояние включения базы данных.
0 = включение базы данных отключено
1 = база данных находится в состоянии частичного включения
2 = база данных находится в состоянии полного включения
|
||||
containment_desc
|
nvarchar
(60) not null
|
Указывает состояние включения базы данных.
NONE = прежняя версия базы данных (нулевое включение)
PARTIAL = частично автономная база данных
FULL = полностью автономная база данных
|
||||
target_recovery_time_in_seconds
|
Предполагаемое время восстановления базы данных в секундах. Допускает значение NULL.
|
ALTER VIEW [sys].[databases] AS
SELECT d.name, d.id AS database_id, r.indepid AS source_database_id,d.sid AS owner_sid, d.modified AS create_date,
convert(tinyint, (d.category/256) & 0xff) AS compatibility_level,
convert(sysname, CollationPropertyFromID(p.cid, 'name')) AS collation_name,
p.user_access, ua.name AS user_access_desc,
sysconv(bit, d.status & 0x400) AS is_read_only, -- DBR_RDONLY
sysconv(bit, d.status & 1) AS is_auto_close_on, -- DBR_CLOSE_ON_EXIT
sysconv(bit, d.status & 0x400000) AS is_auto_shrink_on, -- DBR_AUTOSHRINK
p.state, st.name AS state_desc,
sysconv(bit, d.status & 0x200000) AS is_in_standby, -- DBR_STANDBY
sysconv(bit, d.status & 0x40000000) AS is_cleanly_shutdown, -- DBR_CLEANLY_SHUTDOWN
sysconv(bit, d.status & 0x80000000) AS is_supplemental_logging_enabled, -- DBR_SUPPLEMENT_LOG
p.snapshot_isolation_state, si.name AS snapshot_isolation_state_desc,
sysconv(bit, d.status & 0x800000) AS is_read_committed_snapshot_on, -- DBR_READCOMMITTED_SNAPSHOT
p.recovery_model, ro.name AS recovery_model_desc,
p.page_verify_option, pv.name AS page_verify_option_desc,
sysconv(bit, d.restat & 0x1000000) AS is_auto_create_stats_on, -- DBR_AUTOCRTSTATS
sysconv(bit, d.restat & 0x40000000) AS is_auto_update_stats_on, -- DBR_AUTOUPDSTATS
sysconv(bit, d.restat & 0x80000000) AS is_auto_update_stats_async_on, -- DBR_AUTOUPDSTATSASYNC
sysconv(bit, d.restat & 0x4000) AS is_ansi_null_default_on, -- DBR_ANSINULLDFLT
sysconv(bit, d.restat & 0x4000000) AS is_ansi_nulls_on, -- DBR_ANSINULLS
sysconv(bit, d.restat & 0x2000) AS is_ansi_padding_on, -- DBR_ANSIPADDING
sysconv(bit, d.restat & 0x10000000) AS is_ansi_warnings_on, -- DBR_ANSIWARNINGS
sysconv(bit, d.restat & 0x1000) AS is_arithabort_on, -- DBR_ARITHABORT
sysconv(bit, d.restat & 0x10000) AS is_concat_null_yields_null_on, -- DBR_CATNULL
sysconv(bit, d.restat & 0x800) AS is_numeric_roundabort_on, -- DBR_NUMEABORT
sysconv(bit, d.restat & 0x800000) AS is_quoted_identifier_on, -- DBR_QUOTEDIDENT
sysconv(bit, d.restat & 0x20000) AS is_recursive_triggers_on, -- DBR_RECURTRIG
sysconv(bit, d.restat & 0x2000000) AS is_cursor_close_on_commit_on, -- DBR_CURSCLOSEONCOM
sysconv(bit, d.restat & 0x100000) AS is_local_cursor_default, -- DBR_DEFLOCALCURS
sysconv(bit, d.restat & 0x20000000) AS is_fulltext_enabled, -- DBR_FTENABLED
sysconv(bit, d.restat & 0x200) AS is_trustworthy_on, -- DBR_TRUSTWORTHY
sysconv(bit, d.restat & 0x400) AS is_db_chaining_on, -- DBR_DBCHAINING
sysconv(bit, d.restat & 0x08000000) AS is_parameterization_forced, -- DBR_UNIVERSALAUTOPARAM
sysconv(bit, d.restat & 64) AS is_master_key_encrypted_by_server, -- DBR_MASTKEY
sysconv(bit, d.category & 1) AS is_published,
sysconv(bit, d.category & 2) AS is_subscribed,
sysconv(bit, d.category & 4) AS is_merge_published,
sysconv(bit, d.category & 16) AS is_distributor,
sysconv(bit, d.category & 32) AS is_sync_with_backup,
d.svcbrkrguid AS service_broker_guid,
sysconv(bit, case when d.scope = 0 then 1 else 0 end) AS is_broker_enabled,
p.log_reuse_wait, lr.name AS log_reuse_wait_desc,
sysconv(bit, d.restat & 0x00000004) AS is_date_correlation_on -- DBR_DATECORRELATIONOPT
FROM master.sys.sysdbreg d OUTER APPLY OpenRowset(TABLE DBPROP, d.id ) p
LEFT JOIN sys.syssingleobjrefs r ON r.depid = d.id AND r.class = 96 AND r.depsubid = 0 -- SRC_VIEWPOINTDB
LEFT JOIN sys.syspalvalues st ON st.class = 'DBST' AND st.value = p.state
LEFT JOIN sys.syspalvalues ua ON ua.class = 'DBUA' AND ua.value = p.user_access
LEFT JOIN sys.syspalvalues si ON si.class = 'DBSI' AND si.value = p.snapshot_isolation_state
LEFT JOIN sys.syspalvalues ro ON ro.class = 'DBRO' AND ro.value = p.recovery_model
LEFT JOIN sys.syspalvalues pv ON pv.class = 'DBPV' AND pv.value = p.page_verify_option
LEFT JOIN sys.syspalvalues lr ON lr.class = 'LRWT' AND lr.value = p.log_reuse_wait
WHERE d.id < 0x7fff
AND has_access('DB', d.id ) = 1
GO
Системные базовые таблицы — это основные таблицы, в которых хранятся метаданные определенной базы данных. База данных master рассматривается особо, так как она содержит некоторые дополнительные таблицы, которых нет в других базах данных. Эти таблицы содержат устойчивые метаданные, областью которых является весь сервер.
- В среде Среда SQL Server Management Studio (в отсутствие других открытых выделенных административных соединений) на панели инструментов нажмите кнопку Запрос к ядру СУБД.
- В диалоговом окне Подключиться к компоненту Database Engine выберите Имя сервера и введите ADMIN: , за которым следует имя экземпляра сервера. Например, чтобы подключиться к экземпляру сервера с именем ACCT\PAYABLE, введите ADMIN:ACCT\PAYABLE.
- Заполните раздел Проверка подлинности. Для этого введите учетные данные члена группы sysadmin и нажмите кнопку Соединить.