Quantcast
Channel: Немножко всего .. из жизни администратора ms sql server
Viewing all 43 articles
Browse latest View live

C0000005 - Server terminating - страшное слово для SQL Server

$
0
0

Разберем два кейса причины падения SQL server.

Симптомы довольно распространенные : работает , работает и бац, дамп, и служба остановлена.

Вообще, из практики , если служба остановилась полностью, есть несколько основных причина падения:

- ошибка с оборудования, особенно SQL Server чувствителен к памяти. Недавно случай был,              служба остановилась и все , ни ошибок нет, ни дампа, Но в этот момент была ошибка с     памятью     зафиксирована в System журнале ОС, - в итоге замена планки памяти вендором.

- вторая распространённая причина внезапной остановки SQL Server - это внешние компоненты загруженные в память SQL server, такие как библиотеки поставщиков для Linked Servers, объекты созданные череp sp_oaCreate 

Приведу пример второго случая:

SQL Server падает с ошибкой:

* BEGIN STACK DUMP:                                                                                              

*   05/26/21 17:58:01 spid 362                                                                                   

*                                                                                                                

* ex_handle_except encountered exception C0000005 - Server terminating      


нехорошая ситуация, особенно если учесть. что сервер упал в рабочее время и повлиял на работу известного алкогольного магазина  в России. 

В этот момент в логах SQL Server будет примерно такая информация:


Прочитав файлы дампа , было выявлено, что в момент аварии было обращение ко внешним библиотекам -mso40uiwin32client+0x1718ce


Простой поиск в Интернете , говорит что это библиотеки MS Office16

Которые так же видны в загружаемых библиотеках SQL Server:

Смотрим свойства драйверов:


Как и ожидаемо, стоит параметр Allow InProcess- что и как описано в другой моей статье

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

После снятия данного параметра, падение SQL Server прекратилось.

Проверьте еще раз свои настройки провайдеров для ваших критичных серверов SQL Server.

Если нужна помощь, обращайтесь, не бесплатно конечно.


Полезные ссылки:

https://dbasimple.blogspot.com/2012/12/oracle-linked-server-allow-in-process.html

https://blog.pythian.com/analyze-sql-server-stack-dumps/

https://mssqlwiki.com/2012/10/16/sql-server-exception_access_violation-and-sql-server-assertion/

https://www.sqlservercentral.com/articles/setting-up-linked-servers-with-an-out-of-process-oledb-provider

https://mssqlwiki.com/2012/08/17/how-to-analyze-non-yielding-scheduler-dumps/









Как поменять настройки памяти, если ошиблись при настройке

$
0
0

 Тут случился небольшой случай, коллеги установили настройки памяти и ошиблись при вводе , вместо 12000 Гб, установили 120 мб, это очень мало, в итоге при старте службы MS SQL Server вылетает ошибка в журнале MS SQL :

Failed allocate pages: FAIL_PAGE_ALLOCATION 1

и служба падает.

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


Решение простое:- запустить службу MS SQL  с минимальными параметрами запуска, указав флаг запуска -f . Больше информации на сайте MS 

Информация о запуске MS SQL Server  в минимальной конфигурации здесь.

После этого служба запускается, и  выставляем необходимые параметры памяти, останавливаем службу ms sql , убираем флаг запуска -f, запускаем службу ms sql.


Настройка антивируса на серверах MS SQL Server

$
0
0


Времена идут, сервера меняются, базы данных, растут , экспертиза так же.


Пришлось анализировать сервера ЕРП и производства на основе 1С крупной компании, десятки серверов, и по ходу зашел на авторитетный ресурс по 1С и там было очень неправильное высказывание, что на нагруженных серверах баз данных 1С на основе MS SQL Server антивирус нужно отключать- честно сразу ставится профессионализ данных специалистов 1С(не одна зарплата администратора 1с не покроет потери той же бухгалтерии даже небольшой компании).

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

В данной статье хочу еще раз прописать настройки , необходимый для работы антивируса на серверах баз данных MS SQL Server и других компонентов СУБД.

Но самое главное, что хочется донести,на серверах СУБД с MS SQL Server  антивирус  ДОЛЖЕН быть обязательно.Поверьте, из опыта, а опыт работы большой, а так же работал и в мировой антивирусной компании, где отвечал за сервера СУБД MS SQL Server, нагруженные сервера с террабайтами памяти, сотни террабайт объема данных на одном сервере, антивирус прекрасно работает и не мешает при ПРАВИЛЬНОЙ  настройке.

Для корректной работы MS SQL Server, получение максимальной производительности системы антивирусное программное обеспечение должно настроено на серверах с продуктами MS SQL Server . В противное случае возможна деградация производительности систем, фиксация ошибок, а так же возможна и потеря данных (особенно при использование объектов In-Memory). Настройка антивируса при наличие объектов In-Memory требуется обязательно, иначе потеря данных и сбой работы СУБД гарантировано. Дело в том, что при работе объектов Inmemory, некоторые объеты и dll-ки компилируются на лету во время работы СУБД, что многими антивирусами определяется как подозрительная активность .

Итак в первую очередь нужно исключить процессы из сканирования антивируса:

  • sqlservr.exe (SQL Server ядро СУБД)
  • sqlagent.exe (агент SQL Server)
  • sqlbrowser.exe (служба браузера SQL Server)
  • %ProgramFiles%\Microsoft SQL Server\1<NN>\Shared\SQLDumper.exe (служебная программа SQLDumper)
Файлы баз данных MS SQL:

  •   .mdf
  •   .ldf
  •   .ndf
  •   дополнительные расширения, которые возможно используете  (желательно избегать не стандартные расширения для файлов баз данных)

Отсюда и требование к стандартизации настройки серверов в компании, обычно это выделенные папки на диска , как пример D:\data , F:\Log, т.е вы указываете данные каталоги в которых лежат файлы баз данных с указанным расширением,  а не все диски .

Файлы резервного копирования баз данных :

  •    обычно это расширения .bak и .trn

Файлы доставки журналов( Log Shipping):

  • обычно это расширение  .tuf
Файлы SQL аудита - расширения:
  •    .sqlaudit
Каталоги Full-text данных:

  • § по умолчанию это   Program Files\Microsoft SQL Server\MSSQL\FTDATA , либо Program Files\Microsoft SQL Server\MSSQL$instancename\FTDATA
Файлы SQL Profiler-а(хотя уже профайлером нужно запретить пользоваться) и трассировки по умолчанию:
  • § .trc  расширения
Файлы при выполнении команды DBCC CHECKDB
  • обычно это формат временных файлов <Database_data_filename.extension>_MSSQL_DBCC<database_id_of_snapshot>., расположены рядом с файлами баз данных. Если указан в исключених каталоги баз данных, то данные файлы в исключениях.
Файлы дампов sql server , согласно настройкам СУБД:
  • файлы с расширением .mdmp и обычно расположены в каталоге LOG установки SQL Server
Файлы расширенных событий мониторинга (Extended Events):
  •  расширение .xel или xem,, так же обычно расположены в каталоге  LOG установки SQL Server
Файлы In-Memory объектовбаз данных(обязательно необходимо проверить нахождение данных объектов в исключениях:
  •  обычно каталог In-Memory расположен там же, где и файлы баз данных, если каталог находится в исключения, то и файлы так же в исключениях.

  • следующие типов файлоы должны быть в исключениях:

xtp_<t/p>_<dbid>_<objid>.c

xtp_<t/p>_<dbid>_<objid>.dll

xtp_<t/p>_<dbid>_<objid>.obj

xtp_<t/p>_<dbid>_<objid>.out

xtp_<t/p>_<dbid>_<objid>.pdb

xtp_<t/p>_<dbid>_<objid>.xml

Файлы и объекты SQL репликации:

  •     каталоги COM объектов, drive>:\Program Files (x86) \Microsoft SQL Server\<VN>\COM\ или <drive>:\Program Files\Microsoft SQL Server\<VN>\COM\
  •   каталог моментального снимка репликации и скриптов репликации , обычно путь  \Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\ReplData, (если не установлен другой), расширения файлов: .sch, .idx, .bcp, .pre, .cft, .dri, .trg or .prc

При наличие установленных других компонентов MS SQL Server:

  • При работе службы Analysis Services (необходимо уточнять  пути ):
  •  каталог данных баз данных , по умолчанию C:\Program Files\Microsoft SQL Server\MSSQL.X\OLAP\Data.
  •  файлы резервных копий баз данных, C:\Program Files\Microsoft SQL Server\MSSQL.X\OLAP\Backup

  •   каталог с логами службы  C:\Program Files\Microsoft SQL Server\MSSQL.X\OLAP\Log
При работе Reporting Service(PowerBi report Server):
  •   Каталоги журналов службы  и временных файлов  обычно  (RSTempFiles and LogFiles)
Процессы:

  • %ProgramFiles%\Microsoft SQL Server\<Instance_ID>.<Instance Name>\MSSQL\Binn\SQLServr.exe
  •   %ProgramFiles%\Microsoft SQL Server\<Instance_ID>.<Instance Name>\Reporting Services\ReportServer\Bin\ReportingServicesService.exe
  •  %ProgramFiles%\Microsoft SQL Server\<Instance_ID>.<Instance Name>\OLAP\Bin\MSMDSrv.exe
Исключения  каталого при конфигурации с использованием Windows кластера:

  •  Q:\ (Quorum drive)
  •  C:\Windows\Cluster
  •  MSDTC directory in the MSDTC drive
Исключений, как видим много, и поэтому для правильной работы антивируса должно быть   действие единой политики антивируса на серверах с MS SQL Server, а так же  сервера с MS SQL Server устанавливаются и настраивались по единому стандарту.

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

Второе замечание, для высокой защиты, добавляют хеш исполнительного процесса MS SQL Server SQLServr.exe, но он может меняться послу установки очередного CU  , не забываем обновить его после установки обновления.


Удачной и безопастной работы ваших серверов!.

Viewing all 43 articles
Browse latest View live