Подключение к MS SQL Server через ODBC в Debian 11 Bullseye

Рассмотрим как выполнить настройку подключения к MS SQL Server через ODBC в Debian 11 Bullseye.

Установка Microsoft ODBC Driver for SQL Server

# Добавляем публичный GnuPG-ключ репозитория Microsoft. Добавляем репозиторий Microsoft в список репозиториев и обновляем репозиторий:

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list

apt-get update

# Устанавливаем пакеты ODBC, драйвер ODBC Driver for SQL Server и пакет для возможности авторизации на основе проверки подлинности:

apt-get install -y unixodbc-dev libgssapi-krb5-2

ACCEPT_EULA=Y apt-get install -y msodbcsql18
ACCEPT_EULA=Y apt-get install -y mssql-tools18

echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

 

Посмотреть информацию о настройках ODBC и список подключенных драйверов, можно командами:

odbcinst -j
odbcinst -q -d

Читать далее

Ошибка реорганизация индексов базы данных MS SQL «Невозможно реорганизовать индекс» на базах 1С Предприятие.

После обновления платформы 8.3.20.1674, обратил внимание что не выполняется реиндексация баз данных относящихся к 1С, в логах значится ошибка — «Невозможно реорганизовать индекс «_Acc48_1» в таблице «_Acc48″, поскольку отключена блокировка на уровне страницы.»

Как оказалось что начиная с версии платформы 8.3.22 необходимо выполнять дефрагментацию индексов по следующему алгоритму:

  • До дефрагментации индекса необходимо включить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON);
  • Выполнить дефрагментацию.
  • Обратно выключить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS = ON);

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

Скрипт работает по следующему принципу:

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

Читать далее

MSSQL Server ошибка при подключении — The target principal name is incorrect. Cannot generate SSPI context.

В один момент не смог подключится к своему MSSQL Server используя Windows Authentication, получал ошибку — The target principal name is incorrect. Cannot generate SSPI context.

В логах видно что не удается зарегистрировать Service Principal Name (SPN) службы SQL Server:

Date        1/27/2023 4:31:22 PM
Log        SQL Server (Current - 1/27/2023 5:12:00 PM)
Source        Server
Message
SQL Server is attempting to register a Service Principal Name (SPN) for the SQL Server service. Kerberos authentication will not be possible until a SPN is registered for the SQL Server service. This is an informational message. No user action is required.

Date        1/27/2023 4:31:22 PM
Log        SQL Server (Current - 1/27/2023 5:12:00 PM)
Source        Server
Message
The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/n******4005.example.local:N******4005 ] for the SQL Server service. Windows return code: 0x21c7, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

 

Быстро диагностировать и исправить проблемы можно утилитой — Microsoft Kerberos Configuration Manager (KCM).

 

На компьютере, на котором возникла проблема с подключением, скачиваем и устанвливаем Kerberos Configuration Manager.

Скачать можно с официального сайта — https://www.microsoft.com/en-us/download/details.aspx?id=39046

 

Запускаем KerberosConfigMgr.exe из папки C:\Program Files\Microsoft\Kerberos Configuration Manager for SQL Server используя учетную запись домена, у которой есть разрешения для подключения к компьютеру SQL Server, к которому не можем подключиться.

Нажимаем Connect. На форме подключения оставляем имя сервера и учетные данные, пустыми.

 

Читать далее