четверг, 24 ноября 2022 г.

Slackware, unixODBC , MSSQL , Perl , DBI, DBD

0. Установить unixODBC http://www.unixodbc.org/ 

при установке лучше всего не менять параметры по умолчанию, чтобы система сразу подхватила драйвера. То есть не нужно делать ./configure --prefix=/usr/local/unixODBC и ./configure --sysconfdir=/etc. 

./configure

./make 

./make install

 

Дополнение: Для того чтобы в линукс odbc интерфейс мог получать данные из БД в юникоде, нужно у установить DBD::ODBC с поддержкой юникод.

OOn non-Windows platforms Unicode support is disabled by default.
 To enable it specify -u to Makefile.PL when you configure DBD::ODBC.

https://metacpan.org/pod/DBD::ODBC#Enabling-and-Disabling-Unicode-support

You can also specify that you want UNICODE support by setting the DBD_ODBC_UNICODE environment variable prior to install:

export DBD_ODBC_UNICODE=1
cpanm DBD::ODBC



 1. Скачать драйвер с сайта майкрософт для убунту. ODBC linux MSSQL

https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/m/msodbcsql18/ 

2. deb2tgz перевести в формат слаки и установить

https://www.slackbuilds.org/repository/14.2/misc/deb2tgz/

3. разобраться какие библиотеки требует драйвер в папке /opt/microsoft с помощью ldd

после находим отсутствующие библиотеки через locate,

например locate libodbcinst.so.2

приводит к /usr/local/unixODBC/lib/libodbcinst.so.2 



4. создать символьные линки библиотек в /lib64

  libodbcinst.so.2 => not found

линки создаем обращаем внимание куда попали файлы библиотек после установки unixodbc

так ln -s /usr/local/unixODBC/lib/libodbcinst.so.2 /lib64/libodbcinst.so.2 ,
или так  ln -s /usr/local/lib/libodbcinst.so.2 /lib64/libodbcinst.so.2 

 есть проблемы которые возникают изза разных версий дрйвера odbc от майкрософт,

на виртуалке был скачен драйвер msodbcsql18_18.0.1.1-1_amd64 у которого в зависимостях не было библиотек libcrypt libssl версии 1.0.0.  . На реальной машине с драйвером libmsodbcsql-13.1.so.9.2  есть зависемости которые я не смог разрешить на slack 15. Вариант решения брать опробованный драйвер (https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/m/msodbcsql18/ ) и снести проблемный.

ln -s /usr/lib64/libcrypto.so.1.1 /lib64/libcrypto.so.1.0.0 
 
odbcinst.ini - после установки драйвера образец будет лежать в папке,
/opt/microsoft/..../etc 
нужно скопировать в папку unixodbc (/usr/local/etc/)
 
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1

также нужно проверить скрипт на перле, если ругается на DBD::ODBC
odbc.ini  (/usr/local/etc/) тут прописываются DSN
 
[demo]
Driver = ODBC Driver 18 for SQL Server
Description = demo dsn
Server = MAINSTATION\MSQL2019
TrustServerCertificate = yes
Database = Test
User = sa
Password =



 
 
5. создать dsn  , создать описание драйвера odbcinst -j
 

6. тестовый скрипт для проверки связи с сервером



#!/usr/bin/perl -w
use strict;

use DBI;

# Replace datasource_name with the name of your data source.
# Replace database_username and database_password
# with the SQL Server database username and password.
my $data_source = q/dbi:ODBC:demo/;
my $user = q/sa/;
my $password = q/pass/;

# Connect to the data source and get a handle for that connection.
my $dbh = DBI->connect($data_source, $user, $password)
    or die "Can't connect to $data_source: $DBI::errstr";

# This query generates a result set with one record in it.
my $sql = "SELECT 1 AS test_col";

# Prepare the statement.
my $sth = $dbh->prepare($sql)
    or die "Can't prepare statement: $DBI::errstr";

# Execute the statement.
$sth->execute();

# Print the column name.
print "$sth->{NAME}->[0]\n";

# Fetch and display the result set value.
while ( my @row = $sth->fetchrow_array ) {
   print "@row\n";
}

# Disconnect the database from the database handle.
$dbh->disconnect;
 
********************************************
odbc.ini 
 
[demo]
Driver = ODBC Driver 18 for SQL Server
Description = demo dsn
Server = MAINSTATION\MSQL2019
TrustServerCertificate = yes
Database = Test
User = sa
Password = 
********************************************
 
odbcinst.ini - после установки драйвера образец будет лежать в папке,
/opt/microsoft/..../etc 
нужно скопировать в папку unixodbc
 
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1 
 
 
  
 
 
 
 
 
 






Комментариев нет:

1C - OLMAZ - XALQ CITY

 Ошибка при копирование документа: Общий модуль : ОбщегоНазначения Процедура ПриКопированииДокументаСВозможностьюРучногоРедактированияПриКоп...