Showing posts with label sql. Show all posts
Showing posts with label sql. Show all posts

Thursday, 24 August 2023

GPO and Item-level targeting.

Hi All,

as you know, Item-level targeting can use to target group policy preference settings based on application settings and properties of users and computers in granular level. We can use multiple targeting items in preference settings and make selections based on logical operators (AND, OR, IS, IS NOT).

Item-level targeting in group policy preferences can setup/manage using GPMC. To do that open the group policy settings > Go to relevant Preference settings > right click and select properties.

In my example I am using GPO created for IE 10 Settings, there for the path for it is User Configuration > Preferences > Internet Settings > Internet Explorer 10. Then right click and select properties. 

From properties window, then select Common tab > tick item-level targeting > then click on Targeting button. 


In next window, we can build granular level targeting based on one item or multiple items with logical operators. 


In above example I have built a query based on three setting which is NetBIOS name, Operating System and IP address. In order to apply the preference setting, all three statements should give TRUE value as result as I used AND logical operator. If its OR logical operator the result can have True or False values. 

In the window, New Item menu contained items we can use of targeting. Add Collections allows to create parenthetical grouping. Item Options menu is responsible for defining logical operators. 

As you remember, I early tried to do it by WMI Filters. However WMI filters don't have result by logical AND, so I will prefer to do it by Item-level targeting.

Good luck.

Tuesday, 11 July 2023

AIDA64 з використанням MS Access.

Всім привіт.

AIDA64 Business – це інструмент керування ІТ-активами та віддаленого моніторингу для Windows. За допомогою програми ви можете збирати дуже детальну інвентаризацію обладнання та програмного забезпечення з клієнтських комп’ютерів Windows у мережі вашої компанії та відстежувати зміни як апаратного, так і програмного забезпечення. Він дає змогу віддалено контролювати і керувати своїми комп’ютерами Windows, а також пропонує функції діагностики обладнання та порівняльного аналізу.

Але для цього  AIDA64 потребує попередніх налаштувань.

Ми плануємо зберігати звіти в базі даних, тоді нам потрібно налаштувати базу даних у меню "Параметри". Спочатку ми повинні вибрати Provider, а потім усі інші налаштування залежать від вибраного формату. Ми повинні вибрати тип бази даних, який ми використовуємо в нашій системі! У підпапці «SQL Schema» папки AIDA64 Business ми можемо знайти 8 файлів схеми бази даних (дев’ятий підтримуваний формат, ODBC, не потребує файлу схеми).

Схеми постачальника та бази даних

Макети таблиці бази даних SQL потрібно ініціалізувати за допомогою одного з файлів «DB - *.*», знайдених у папці SQL_Schema:

DB - Access.mdb – файл бази даних для MS Access 2000/XP/2003/2007

DB - Access97.mdb – файл бази даних для MS Access 97

DB - InterBase. sql – Схема для Borland InterBase та Firebird

DB - MySQL.sql – Схема для MySQL

DB - Oracle.sql – Схема для Oracle

DB - PostgreSQL .sql – Схема для PostgreSQL

DB - SQLServer.sql – Схема для MS SQL Server

DB - Sybase.sql – Схема для Sybase

Якщо ви такої папки не маєте, або загубили, то структура DB-Access.mdb виглядає так як на малюнку, і ви можете самостійно її створити. 



Wednesday, 2 November 2022

Convert Windows Image.


Всем привет.

Есть на TechNet интересная утилита Convert-WindowsImage, умеющая преобразовывать установочные образы в файлы виртуальных жестких дисков. Convert-WindowsImage.ps1 - это скрипт PowerShell, который конвертирует установочный образ диска из формата WIM или ISO в формат Virtual Hard Disk. В результате работы скрипта из дистрибутива Windows получается готовый VHD с установленной операционной системой, который можно использовать для создания виртуальной машины или для загрузки обычного компьютера.

Развернутая таким способом ОС будет находиться в таком же состоянии, как после применения образа и первой перезагрузки в ходе обычной установки. Такой же эффект получается после обработки (Generalize) уже установленной системы утилитой Sysprep. То есть, после первой загрузки системы вам придётся пройти процедуру начальной настройки (Out Of Box Experience, OOBE).

Convert-WindowsImage является развитием другой утилиты - WIM2VHD, однако имеет несколько существенных отличий:

• утилита переписана на языке PowerShell (WIM2VHD использовала JScript);

• добавлена поддержка виртуальных жестких дисков формата VHDX;

• добавлена возможность работы с образами ISO;

• добавлен графический интерфейс (есть информация что GUI более не поддерживается).

Convert-WindowsImage имеет несколько предварительных требований к версиям операционной системы:

• утилита может быть запущена только на Windows Server 2012 и выше. 

• утилита может конвертировать установочные образы следующих операционных систем: Windows 10, Windows Server 2012 и выше. 

Примеры использования Convert-WindowsImage.

Для запуска Convert-WindowsImage необходимо скопировать файл Convert-WindowsImage.ps1 на компьютер и изменить политику выполнения скриптов на RemoteSigned.

Пример 1:

Создаем в папке E:\VHD виртуальный диск Win8.vhdx из образа установочного диска E:\ISO\Windows 8\windows8.iso. Задаем формат диска VHDX, тип динамический и размер 25Гб:

.\Convert-WindowsImage.ps1 -SourcePath E:\ISO\Windows 8\windows8.iso

-VHDPath E:\VHD\Win8.vhdx -VHDFormat VHDX -VHDType Dynamic -SizeBytes 25GB


Friday, 13 May 2022

Отчетность в DPM.

Всем привет.

Продолжая углубляться в функционал сервера DPM решил я изучить что же полезного мне может показать его отчетность из коробки. За это отвечает Reporting Services.

По умолчанию отчеты будут видны здесь http://dpm01.forza.com/Reports или в самой консоли сервера на закладке Reports. 


Как видим мне было предложено 6 видов отчетов из которых после беглого изучения я выбрал всего два:

  • DiskUtilizationReport
  • RecoveryPointStatusReport.

Friday, 25 March 2022

WSUS Reset Server Node.


Hi all.

Yesterday I had to remember relaunch our WSUS server. It' a pity, but he had shutdown as Application Pool:  Reset Server Node again and again. So I found some solutions for such problem.

There are:

1) Reduce the number of updates approved.

2) Use Server Cleanup wizard:

Open update services console in wsus server, expand options by clicking on server clean up wizard and clean up all junk. Maybe waste a lot of time.

3) Use SQL Clean Up:

sqlcmd -I -S \\.\pipe\MICROSOFT##WID\tsql\query -i C:\WsusDBMaintenance.sql

4) Use WSUS Repair command:

wuauclt /detectnow

5) Check WSUS Application Pool settings in IIS:

- Open IIS

- Click on Application Pools

- Click on WsusPool

- Click Advanced Settings

- Scroll down and increase the Private Memory Limit and decrease the Regular Time Interval.

6) Run Wsusutil Command, Restart all Windows services (Update Services, WID / SQL, etc.): 

cd C:\Program Files\Update Services\Tools

Wsusutil.exe postinstall /servicing

7) Or follow to the advices of WSUS guru:


Good luck.

Glory to Ukraine.

Friday, 1 October 2021

Про Algorius Net Viewer.

Всем привет.

Коллеги дали попробовать крутой инструмент - Algorius Net Viewer.

Algorius Net Viewer - это программа, которая позволит администраторам сети просматривать, управлять, контролировать, проводить инвентаризацию и получать уведомления на происходящие события. 

Одна из его основных функций - визуализация! Благодаря этому программному обеспечению мы можем удобно просматривать инфраструктуру нашей сети и легко перемещаться по ней. В этом смысле у нас есть редактор схем компьютерных сетей, и мы даже можем легко создать карту нашей сети. Кроме того, он позволяет создавать географические карты, которые позволяют размещать устройства с географической привязкой и четко видеть их географическое положение (OpenStreetMap), а также импортировать и экспортировать документ формата MS Visio.

Еще одна его функция - мониторинг с визуальным отслеживанием маршрута, в котором с интегрированным Тraceroute он покажет нам маршрут к устройству визуально на карте и в виде текста. Он также позволяет сканировать порты, а с помощью встроенной утилиты Wake-On-Lan мы можем включать компьютеры удаленно. Встроенные браузеры SNMP и WMI позволяют просматривать детальную информацию об устройствах, таблицы сетевых интерфейсов, соединений, т.е. упрощается выбор OID и написание WQL выражений для настройки мониторинга.


Algorius Net Viewer осуществлет мониторинг, используя различные протоколы и технологии: ICMP, UDP, TCP, SNMP, WMI, PowerShell, SSH, ARP, DNS, NETBIOS, HTTP(s), FTP(s), SQL, POP3, IMAP, SMTP. Это дает возможность контролировать практически любой аспект работы служб, серверов и других сетевых устройств.

Основные способы опроса (SNMP, PING, WMI) реализованы, как плагины на базе общего API. Это позволяет сторонним разработчикам расширять функционал приложения, создавая дополнительные плагины, адаптированные под собственные потребности.

Saturday, 31 October 2020

Zabbix performance tuning #2.

Всем привет.

Сегодня я хочу продолжить тему оптимизации производительности Zabbix. На это раз пройдемся по разделам книги «Zabbix Performance Tuning» от Luciano Alves, издательство Packt Publishing, 2015. Это материал подготовил Евгений Каменев три года тому. С тех пор ничего более подробного на эту тему я не встречал. Так что продолжим.


Zabbix - это платформа, которая состоит из трех компонентов:

1.Сервер Zabbix.

2.База данных Zabbix.

3.Фронтенд Zabbix.

Но в тему оптимизации следует включить еще два дополнительных пункта:

4.Оптимизация операционной системы Linux.

5. Мониторинг состояния Zabbix.


Далее рассмотрим каждый пункт последовательно.

1.Оптимизация Zabbix-сервера.

Использование активных Zabbix-agent проверок вместо пассивных Zabbix-agent проверок (уменьшает нагрузку на Zabbix-сервер и количество TCP-соединений).

При этом на Zabbix-агенте, возможно,есть смысл увеличить дефолтные значения параметров.

Ниже приведены дефолтные значения

BufferSend=5

BufferSize=100

На Zabbix-сервере необходимо увеличить количество процессов Zabbix-trapper, которые принимают входящие соединения активных агентов, Zabbix-sender и активных прокси.

Использование наименее дорогого с точки зрения чтения/записи базы данных типа элемента данных - (numeric(unsigned),numeric (float), character, text, log).

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

Использовать наименее дорогого с точки зрения нагрузки процессора триггера - (функции last(), nodata(), min(), max(), avg())

Например, функции min/max/avg сильнее нагружают процессор в отличии от функций last и nodata.

Время хранения данных в таблицах history,trends,events.

Уменьшаем время хранения истории с дефолтных 90 дней на 7 дней (при создании элемента данных)

Время хранения в таблице trends оставляем дефолтное 365 дней (при создании триггера)(если нет необходимости в просмотре информации за год,то сокращаем время хранения тенденций)

Время хранения событий, генерируемых триггерами, можно уменьшить с дефолтных 365 дней, чтобы не увеличивать размер таблицы events при частых колебаниях/срабатывании триггеров.

Tuesday, 2 June 2020

Оптимизация Zabbix.

Всем привет.

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

По ходу рекомендую к прочтению книгу James Turnbull "The Art of Monitoring", 2016. Она хоть и не про Zabbix, но толково освещает общие моменты мониторинга  в сети на примере Reimann, Graphite и ELK.

Ну а сегодня начнем с главного конфига Zabbix.
#sudo nano /etc/zabbix/zabbix_server.conf

Есть смысл править такие параметры, как объем рабочего кэша, количество параллельных процессов в опросах и таймауты:
StartPollers=50
StartPreproceessors = 60
StartPollersUnreachable=30
StartPingers=100
CacheSize=64M
HistoryCacheSize=32M
HistoryIndexCacheSize=16M
TrendCacheSize=16M
ValueCacheSize=32M
Timeout=15

Обратите внимание что если некий узел мониторинга недоступен, процессы опроса его параметров будут заняты промежуток времени, равный таймауту на опрос (например Timeout=15). Если вдруг окажутся недоступными, например, более сотни таких узлов, с каждого из которых Zabbix собирает более десятка параметров, то весь процесс опроса(ожидания ответа) займет ресурсы Zabbix и это может привести к его отказу в нормальной работе.

Не мене важным может оказаться база данных Zabbix. Переходим к конфигу БД Zabbix на примере MySQL.
#sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Wednesday, 23 October 2019

Awk - это больше, чем команда.

Всем привет.

Продолжаем изучать инструменты поиска в Linux.

Наверняка вы слышали про  команду awk. И видели много примеров  с ней. Но awk - это больше, чем команда. Это язык программирования со своими собственными правилами. Вы можете писать на нем скрипты для выполнения сложных операций, либо можете просто использовать из командной строки. Его название составлено из заглавных букв Aho, Weinberger и Kernighan (да, тот самый Brian Kernighan), авторов языка, история которого началась в 1977 году. Если вы учитесь или учились программированию на C, то увидите многие похожие концепции в awk. Вам понадобятся определенные знания командной оболочки Linux и, возможно, базовые навыки написания скриптов, что, впрочем, необязательно, так как мы постараемся изложить материал как можно проще. Большое спасибо Arnold Robbins за его работу над awk.

Для чего нужен awk?

awk - это утилита/язык для извлечения данных. Именно awk являлся источником вдохновения для Larry Wall, когда он создавал Perl. Для выполнения различных практических задач по обработке текста awk часто используется совместно с sed. В зависимости от поставленной задачи вы можете использовать либо awk, либо Perl, хотя это в большей степени зависит от личных предпочтений. Как и sed, awk читает за один раз одну строку, выполняет определенные действия в зависимости от заданных опций, и выводит результат. Одним из самых простых и популярных способов использования awk является выбор столбца из текстового файла или из вывода другой команды. Когда я устанавливал Debian на свою вторую рабочую станцию, я использовал awk для того, чтобы получить список установленных на первой машине, и скормить его aptitude. Я делал это с помощью команды вида:

$ dpkg -l | awk ' {print $2} ' > installed

В настоящее время большинство менеджеров пакетов предоставляют такую возможность, например это можно сделать с помощью команды rpm's -qa, но вывод содержит больше информации, чем мне нужно. Я вижу, что второй столбец вывода dpkg -l содержит названия установленных пакетов, поэтому я использовал вышеприведенную команду, чтобы извлечь только второй столбец.

Sunday, 6 October 2019

Передача событий сервера в Syslog.

Всем привет.

Как то мы разбирали ранее что события с Windows-сервера можно перенаправить на другой Windows-сервер.

Это легко можно устроить с помощью групповой политики. Для этого в групповой политике в ветке “Computer Configuration –> Policies –> Administrative Templates –> Windows components –> Event Forwarding” установить параметр “Configure the server address, refresh interval, and issuer certificate authority of a target Subscription Manager” в значение “Enabled” со следующим значением опции “SubscriptionManagers”: Server=http://<Event Collector FQDN>:5985/wsman/SubscriptionManager/WEC

Для протокола HTTPS прописываете обмен через порт 5986.

И надо не забыть сказать кто(hostname or IP-adr) имеет право эти события забирать в политике Windows Components/Windows Remote Management (WinRM)/WinRM Service. This policy setting allows you to manage whether the Windows Remote Management (WinRM) service automatically listens on the network for requests on the HTTP transport over the default HTTP port. If you enable this policy setting, the WinRM service automatically listens on the network for requests on the HTTP transport over the default HTTP port. To allow WinRM service to receive requests over the network, configure the Windows Firewall policy setting with exceptions for Port 5985 (port for HTTP).

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

Еvtsys.

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

Его установка весьма проста.

copy evtsys.* %systemroot%\system32
%systemroot%\system32\evtsys.exe -h SYSLOGSRV -s 240 -i
net start evtsys

где SYSLOGSRV это имя нашего Syslog-сервера.

Далее неплохо бы поправить файл конфига %systemroot%\system32\evtsys.cfg
net stop evtsys
...правка...
net start evtsys

По умолчанию фильтр указанный в Evtsys.cfg выглядит так, что передаются события со всех четырех основных журналов.

XPath:Application:<Select Path="Application">*</Select>
XPath:Security:<Select Path="Security">*</Select>
XPath:Setup:<Select Path="Setup">*</Select>
XPath:System:<Select Path="System">*</Select>

Saturday, 3 August 2019

Схлопывание (flapping) событий в Zabbix.

Всем привет. 

Триггеры в системе мониторинга Zabbix несут полезную информационную нагрузку. Их полезность зависит от кода условия который вы в нем укажите. 

Вот пригодилось лично мне пару условий которые я недавно нашел в сети и публикую их вам ниже.

Оценить производительность системы можно так:
{server:system.cpu.load.last()} > 5

Производительность системы с 10-ти минутной историей:
{server:system.cpu.load.min(10m)} > 5

Оценить доступность сервиса по http можно так:
{server:net.tcp.service[http].last()} = 0

Доступность сервиса с 10-ти минутной историей:
{server:net.tcp.service[http].max(5m)} = 0
OR
{server:net.tcp.service[http].max(#3)} = 0

Как преодолеть схлопывание (Flapping) события? Это связано с количеством оповещений в рамках данной проблемы.

Исходное условие пишется так:
{server:system.cpu.load.last()} > 5

А должно быть так:
({TRIGGER.VALUE}=0 and {server:system.cpu.load.last()}>5)
OR
({TRIGGER.VALUE}=1 and {server:system.cpu.load.last()}>1)

Для оценки производительности системы:
({TRIGGER.VALUE}=0 and {server:system.cpu.load.min(5m)}>3)
OR
({TRIGGER.VALUE}=1 and {server:system.cpu.load.max(2m)}>1)

Для оценки свободного места:
({TRIGGER.VALUE}=0 and {server:vfs.fs.size[/,pfree].last()}<10)
OR
({TRIGGER.VALUE}=1 and {server:vfs.fs.size[/,pfree].min(10m)}<30)

Для оценки доступности SSH-сервиса:
({TRIGGER.VALUE}=0 and {server:net.tcp.service[ssh].max(#3)}=0)
OR
({TRIGGER.VALUE}=1 and {server:net.tcp.service[ssh].min(#10)}=0)

Для оценки аномалии производительности системы в течении недели:
{server:system.cpu.load.avg(1h)} > 2 *
{server:system.cpu.load.avg(1h,7d)}

На сегодня все.

Sunday, 28 April 2019

MS Outlook и SQL.

Всем привет.

На днях пришлось поглубже залезть в почтовый клиент MS Outlook. Думаю вы знаете что этот клиент является еще и многофункциональным органайзером. Так вот в нем можно организовать свои пользовательские представления сообщений и запланированных мероприятий. Естественно все это связано с настройкой фильтрации материала.

И как тут было не "удивиться" что любопытным пользователям вроде меня даже доступна фильтрация с помощью SQL.



Отличная возможность "вылизать" свой фильтр по вашим потребностям.
Успехов.

Saturday, 24 November 2018

Лучшие редакторы кода для PHP разработчиков, часть 1.

Всем привет.

Web-кодировщики проводят массу времени в своих редакторах и IDE, поэтому и к выбору программного обеспечения относятся чрезвычайно серьёзно.

Как минимум, среда программирования должна обеспечить проверку синтаксиса и коррекцию кода, автодополнение и автозавершение - всё то, что называется "code intelligence".

Следует принимать во внимание и целый комплекс используемых технологий - HTML, CSS, JavaScript, PHP, а так же распределённый характер любого WEB-приложения.

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

Серверная часть любого сайта также может включать огромное количество SQL-запросов и интенсивно взаимодействовать с базами данных.

Если вы решили выйти за пределы хобби-проектов и программировать профессионально, то критически важно, чтобы ваша программа, кроме продвинутых возможностей редактирования, поддерживала ещё и FTP протокол, понимала синтаксис SQL и предоставляла интерфейс для подключения к базам данных.

Давайте рассмотрим, как популярные редакторы кода и IDE реализуют такие важные для PHP разработчиков функции.

Сегодня будет первая часть обзора где померяем возможности знаменитого Sublime Text и Atom. Поехали.

Sublime Text

Sublime Text - этот редактор представляет отличный пример сбалансированной функциональности и скорости, наряду с нетребовательностью к ресурсам.

Последняя версия работает эффективно и быстро, так же уменьшилось количество используемой оперативной памяти. Работает на Windows, Linux и OS X, для Windows также есть портабельная версия. 

Saturday, 12 May 2018

Item-level targeting и запрос WMI.

Всем привет.

Так вот - таки да,  Item-level targeting в политиках рулит. Я вам обещал что расскажу - проще простого, все делается на раз два, правкой ключей реестра и их нацеливанием на конкретную группу хостов или объектов. Вот здесь парень все показал подробно и доходчиво. Повторять его не буду. Он точно молодец.



Я проверил эту возможность для моей GP. Редактор нацеливания предлагает  на выбор много параметров. Но нас с вами привлекает самый нижний элемент - запрос WMI. Теперь наши запросы красиво вяжутся по нужному нам "И".









Более того, WMI-запросы можно комбинировать с LDAP-запросами и MSI.
Успехов.

Saturday, 5 May 2018

WMI-фильтры в групповых политиках (GPO).

Всем привет.

Вот посоветовал вчера вам отследить версию MS Office по его папке. А дело даже не в версии, а в его наличии на том или ином ПК в сети. Ибо MS Office можно поставить как на сервер так и на рабочую станцию. Казалось бы нам в руки сам падает WMI-фильтр. Ведь так удобно его использовать для фильтрации целевой группы в GPO. 

Однако не все так просто. Вот к примеру надо отфильтровать и тип ОС и наличие в ней SQL-сервера. Делаем штатными средствами два запроса и оба помещаем в один фильтр. 


Однако практика показывает что оба запроса выполняются хоть и последовательно, но независимо от результатов друг друга. Печалька. Поэтому специалисты советуют обратиться к gpo item level targeting. Ok, разберемся.

Для справки запрос для определения ОС.

SELECT * FROM Win32_OperatingSystem WHERE Version LIKE "ВерсияОС" AND ProductType = "ТипКлиента" AND OSArchitecture = "Разрядность" где

ВерсияОС:
Windows Server 2016 и Windows 10 - 10.0%
Windows Server 2012 R2 и Windows 8.1 — 6.3%
Windows Server 2012 и Windows 8 — 6.2%
Windows Server 2008 R2 и Windows 7 — 6.1%
Windows Server 2008 и Windows Vista — 6.0%
Windows Server 2003 — 5.2%
Windows XP — 5.1%
Windows 2000 — 5.0%

ТипКлиента:
ProductType=1 - Клиент
ProductType=2 - Контроллер домена
ProductType=3 - Сервер

Разрядность:
OSArchitecture ="64-bit"
OSArchitecture ="32-bit"

Успехов.

Sunday, 11 March 2018

Значение NULL или просто Нет Данных.

Привет.

В SQL-запросах все хорошо до тех пор пока не попадается значение NULL. Значение NULL или просто Нет Данных.

Основная особенность NULL-а заключается в том, что он не равен ничему, даже другому NULLу. С ним нельзя сравнить какое-либо значение с помощью любых операторов: =, <, >, like… Даже выражение NULL != NULL не будет истинным, ведь нельзя однозначно сравнить одну неизвестность с другой. Кстати, ложным это выражение тоже не будет, потому что при вычислении условий Oracle, например, не ограничивается состояниями ИСТИНА и ЛОЖЬ. Из-за наличия элемента неопределённости в виде NULLа существует ещё одно состояние - НЕИЗВЕСТНО. Красота, а вы думали что логика это только черное или белое?)

Сравнение с NULLом.

Существуют специальные операторы IS NULL и IS NOT NULL, которые позволяют производить сравнения с NULL-ами. IS NULL вернёт истину, если операнд имеет значение NULL и ложь, если он им не является. 

Соответственно, IS NOT NULL действует наоборот: вернёт истину, если значение операнда отлично от NULL-а и ложь, если он является NULL-ом.

Кроме того, есть пара исключений из правил, касающихся сравнений с отсутствующими значениями. Во-первых, это функция DECODE, которая считает два NULL-а эквивалентными друг другу. Во-вторых, это составные индексы: если два ключа содержат пустые поля, но все их непустые поля равны, то Oracle считает эти два ключа эквивалентными.

Оператор NVL(value, new_value) помогает явно бороться с неизвестностью. Если value есть NULL, то возвращаемый результат будет new_value. Например NVL(NULL, 0) вернет 0.

Логические операции и NULL.

Обычно, состояние НЕИЗВЕСТНО обрабатывается так же, как ЛОЖЬ. Например, если вы выбираете строки из таблицы и вычисление условия x = NULL в предложении WHERE дало результат НЕИЗВЕСТНО, то вы не получите ни одной строки. Однако, есть и отличие: если выражение НЕ(ЛОЖЬ) вернёт истину, то НЕ(НЕИЗВЕСТНО) вернёт НЕИЗВЕСТНО.

С отрицанием NOT:
not(null  = null) - UNKNOWN
not(null != null) - UNKNOWN
not(null  = 'a')  - UNKNOWN
not(null != 'a')  - UNKNOWN
not(null <> 'a')  - UNKNOWN

С оператором OR:
null or true    - TRUE    
null or false   - UNKNOWN
null or null    - UNKNOWN

С оператором AND:
null and true   - UNKNOWN
null and false  - FALSE   
null and null   - UNKNOWN

Запомнить легко, всего лишь в 2-х случаях неизвестность (UNKNOWN) переходит в определенность. Кстати из-за особенностей трёхзначной логики NOT IN вообще не дружит с NULL-ами: как только NULL попал в условия отбора, данных на выходе не будет.

NULL и пустая строка эквивалентны:
'' is null = TRUE

Также:
NULL+NULL=NULL
NULL+100=NULL

Такие дела.

Monday, 26 February 2018

SQL - разница между INNER JOIN и OUTER JOIN.

Всем привет.

Совсем недавно на собеседовании мне был задан вопрос по SQL. Ну кто же его, или про него, не знает. Чаще всего строится ассоциация с запросами типа SELECT. Но оператор SELECT весьма многогранен. Лично меня часто смущали условия типа JOIN, как внешние так и внутренние. Поэтому я решил прояснить это вопрос. Может и вам пригодиться.

В чем же разница между INNER JOIN и OUTER JOIN?

В SQL есть два типа оператора JOIN: INNER JOIN и OUTER JOIN. OUTER JOIN тоже может быть двух видов: LEFT JOIN и RIGHT JOIN. Главная разница между INNER JOIN и LEFT JOIN в том, что в первом случае из обеих таблиц выбираются только подходящие записи, а во втором случае из первой таблицы выбираются все записи, а из второй только подходящие. Всегда обращайте внимание на запросы с «ALL», потому что они, как правило, требуют LEFT JOIN, например, запрос, который требует найти все отделения и количество работников в них. Если вы используете INNER JOIN, то пропустите пустые отделения, в которых никто не работает. FULL JOIN логично объединяет обе таблицы. Существует еще запись CROSS JOIN, но она используется редко.

А теперь наглядно.

В тексте запроса можно опускать INNER если указан только JOIN. И OUTER если используете LEFT JOIN или RIGHT JOIN.

Также бывает полезно знать командную строку логина к популярным СУБД. Ниже маленькая справка.

Oracle: default port 1521
Connection: sqlplus username/pass@host:port/service

MSSQL: default port 1433
Connections:
до 2005-го: osql.exe -U <login> -P <password> -i <inputfile> - выполнить файл используя указанный login/password
C 2005-го:  sqlcmd -S server1\SQLExpress -U SqlUserAccount -P SqlPassword

MySQL: default port 3306
Connection: mysql -h host -u user -p

Firebird: default port 3050
Connection: isql [режимы] [имя-базы-данных] [-u[ser] <имя-пользователя> -pas[sword] <пароль>]

Успехов.

Friday, 5 January 2018

Удаление зависшей сессии в MS SQL.

Привет.

Весьма коротко. Зависшие сессии при работе с базами данных мешают всем. Они едят ресурсы и не дают сделать многие операции по профилактике базы данных. Ранее я писал как отлавливать такие сессии в Oracle. Сегодня в двух словах расскажу как я это делал в MS SQL.

Чтобы сбросить зависшие сессии надо в MS SQL Enterprice Manager-e на нужной базе данных выбрать задачу "Detach database", далее кликнуть "Сlear" и "Cancel". Это все.


На рисунке выше кнопка "Сlear" не активна потому как у меня не было никаких сессий в базе данных, об этом говорит и количество соединений равное 0.

Успехов.

Friday, 3 November 2017

Логические блоки SQL.

Всем привет.

Говорят что вторым языком после Английского будущий программист должен знать SQL. SQL это язык структурированных запросов (Structural Query Language).  

SQL необходим для создания, изменения и удаления данных в реляционных базах данных. Есть стандартный SQL, но - производители СУБД включают в него некоторые собственные наработки - так появились различные диалекты SQL (Transact, PL/SQL и другие).

Существует несколько блоков SQL: определения данных DDL, манипуляций данными DML, определения доступа к данным DCL, управления транзакциями TCL.

Иногда в тестах спрашивают про разницу между DDL, DML, DCL и TCL  командами. Так в чем же она?

DDL - (Data Defenition Language) предложения для определения структуры базы данных или схемы. 

Примеры:
CREATE - создает объекты базы данных (таблицы, представления и т.д.)
ALTER - изменяет структуру и объекты базы данных
DROP - удаляет объекты базы данных
TRUNCATE - удаляет все записи из таблицы
COMMENT - добавляет комментарии в словарь данных
RENAME - переименовывает объект (alter table <old_name> rename to <new_name>)

DML - (Data Manipulation Language) предложения для управления данными. 

Примеры:
SELECT - возвращает данные из базы данных
INSERT - вставляет данные в таблицу
UPDATE - обновляет существующие данные в таблице
DELETE - удаляет все записи в таблице
MERGE - UPSERT операция (insert или update)
CALL - вызов подпрограммы PL/SQL или Java
EXPLAIN PLAN - предоставляет план запроса
LOCK TABLE - управление параллелизмом

Monday, 16 November 2015

Быстрый поиск зависших сессий в Oracle.

Привет всем.

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


1.Находим в \bdump\alert_base_istance.log причину несостоявшегося бекапа:




Версия на печать

Популярное