Как проверить, является ли версия ODBC той, что указана в файле odbc.ini?

#sql-server #bash #docker #ubuntu #odbc

Вопрос:

У меня есть требование настроить оболочку для установки указанной версии ODBC.

Приложение, которое я настраиваю, — это угловое приложение, которое использует janusgraph для хранения данных, размещенных локально в docker.

Я обновил файл odbc.ini, добавил разработанную версию. ref:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

Я также обновил install-odbc.sh файл и добавил сведения о версии.

 ACCEPT_EULA=Y apt-get -y install msodbcsql17=-17.8.so.1.1
# optional: for bcp and sqlcmd
ACCEPT_EULA=Y apt-get -y install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
apt-get install -y unixodbc-dev
# apt-show-versions msodbcsql17
msodbcsql17:amd64/bionic 17.8.1.1-1 uptodate
 

Затем я удалил приложение и установил его снова с нуля, все прошло успешно, и мое приложение является резервным и работает в моей локальной установке в docker.

Единственная проблема, с которой я сталкиваюсь, заключается в том, как мне убедиться, что действительно версия ODBC соответствует версии файла odbc.ini?

ODBC.ini

 Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.8.so.1.1
Description     = MSSQL Server
Trace           = Yes
Server          = 10.0.0.0
Database        = IT_D
Port            = 1433
TDS_Version     = 7.4
QuotedId        = YES
AnsiNPW         = YES
Encrypt         = YES
TrustServerCertificate = YES
#VarMaxAsLong=YES

[Default]
Driver          = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.8.so.1.1 
 

Файл Docker:

 FROM ubuntu:18.04

# Create app directory
WORKDIR /root/importer

RUN apt-get -y update
# RUN apt-get -y install wget
# RUN wget https://rds-combined-ca-bundle.pem
# Wget not properly resolved by Jenkins, using local file as fallback
COPY ./rds-combined-ca-bundle.pem ./

COPY ./install-odbc.sh ./
RUN apt-get -y install gnupg2
RUN apt-get -y install dos2unix
RUN dos2unix ./install-odbc.sh

# Make sure the microsoft ODBC repository can be added as signed source
RUN apt-get -y update
RUN apt-get install -y curl apt-utils
RUN apt-get install -y apt-transport-https
# RUN apt-key adv --keyserver keyserver.ubuntu.com --keyserver-options http-proxy=${HTTP_PROXY} --recv-keys xxxxxx1229xx

RUN bash ./install-odbc.sh

# Node.js v14
RUN apt-get install -y git-core curl build-essential openssl libssl-dev python
RUN apt-get update -qq amp;amp; apt-get clean
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get update -qq amp;amp; apt-get clean
RUN apt-get -y install nodejs
RUN node -v
RUN npm -v

# Oracle installation
ENV ORACLE_INSTANTCLIENT_MAJOR 19.6
ENV ORACLE_INSTANTCLIENT_VERSION 19.6.0.0.0
ENV ORACLE /usr/local/oracle
ENV ORACLE_HOME $ORACLE/lib/oracle/$ORACLE_INSTANTCLIENT_MAJOR/client64
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:$ORACLE_HOME/lib
ENV C_INCLUDE_PATH $C_INCLUDE_PATH:$ORACLE/include/oracle/$ORACLE_INSTANTCLIENT_MAJOR/client64

RUN apt-get update amp;amp; apt-get install -y libaio1 
        curl rpm2cpio cpio 
    amp;amp; mkdir $ORACLE amp;amp; TMP_DIR="$(mktemp -d)" amp;amp; cd "$TMP_DIR" 
    amp;amp; curl -L https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient${ORACLE_INSTANTCLIENT_MAJOR}-basic-${ORACLE_INSTANTCLIENT_VERSION}-1.x86_64.rpm -o basic.rpm 
    amp;amp; rpm2cpio basic.rpm | cpio -i -d -v amp;amp; cp -r usr/* $ORACLE amp;amp; rm -rf ./* 
    amp;amp; ln -s libclntsh.so.${ORACLE_INSTANTCLIENT_MAJOR} $ORACLE/lib/oracle/$ORACLE_INSTANTCLIENT_MAJOR/client64/lib/libclntsh.so.$ORACLE_INSTANTCLIENT_MAJOR 
    amp;amp; ln -s libocci.so.${ORACLE_INSTANTCLIENT_MAJOR} $ORACLE/lib/oracle/$ORACLE_INSTANTCLIENT_MAJOR/client64/lib/libocci.so.$ORACLE_INSTANTCLIENT_MAJOR 
    amp;amp; echo "$ORACLE_HOME/lib" > /etc/ld.so.conf.d/oracle.conf amp;amp; chmod o r /etc/ld.so.conf.d/oracle.conf amp;amp; ldconfig 
    amp;amp; rm -rf /var/lib/apt/lists/* amp;amp; apt-get purge -y --auto-remove curl rpm2cpio cpio

COPY ./dist/. ./
COPY ./package*.json ./
COPY ./tsconfig.json ./

# RUN npm install node-pre-gyp
RUN npm install

RUN node -v

COPY ./odbc.ini /etc/
RUN dos2unix /etc/odbc.ini
RUN cp /opt/microsoft/msodbcsql17/lib64/* /opt/microsoft/msodbcsql17/lib64/libmsodbcsql
RUN ls /opt/microsoft/msodbcsql17/lib64

COPY ./sqlnet.ora $ORACLE_HOME/network/admin/sqlnet.ora
RUN dos2unix $ORACLE_HOME/network/admin/sqlnet.ora

# CMD bash -c "npm run start:watch"
CMD bash -c "node --max-old-space-size=8192 ./app.js"
 

Я попытался проверить журналы докеров, но не смог подать ничего, что указывало бы на то, что ODBC был обновлен.

Не могли бы вы, пожалуйста, помочь мне с шагами по проверке версии ODBC, используемой моим приложением.

Заранее спасибо

Сивуиле

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

1. Большое спасибо, гуру, я нашел способ проверить это с помощью команды bash: ls /opt/microsoft/msodbcsql17/lib64/