Menginstal driver Microsoft ODBC untuk SQL Server (Linux)
Artikel
Artikel ini menjelaskan cara menginstal Microsoft ODBC Driver untuk SQL Server di Linux. Ini juga mencakup instruksi untuk alat baris perintah opsional untuk SQL Server (bcp dan sqlcmd) dan header pengembangan unixODBC.
Artikel ini menyediakan perintah untuk menginstal driver ODBC dari shell bash. Jika Anda ingin mengunduh paket secara langsung, lihat Mengunduh Driver ODBC untuk SQL Server.
Microsoft ODBC 18
Bagian berikut menjelaskan cara menginstal driver Microsoft ODBC 18 dari shell bash untuk distribusi Linux yang berbeda. Distribusi yang didukung adalah Alpine Linux, Debian, Red Hat Enterprise Linux (RHEL), Oracle Linux, SUSE Linux Enterprise Server (SLES), dan Ubuntu. Dimulai dengan versi 18.4, untuk menerima EULA secara otomatis saat menginstal driver Linux non-Alpine (.deb atau .rpm), Anda dapat membuat file '/opt/microsoft/msodbcsql18/ACCEPT_EULA'.
case $(uname -m) in
x86_64) architecture="amd64" ;;
arm64) architecture="arm64" ;;
*) architecture="unsupported" ;;
esac
if [[ "unsupported" == "$architecture" ]];
then
echo "Alpine architecture $(uname -m) is not currently supported.";
exit;
fi
#Download the desired package(s)
curl -O https://download.microsoft.com/download/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/msodbcsql18_18.4.1.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/mssql-tools18_18.4.1.1-1_$architecture.apk
#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/msodbcsql18_18.4.1.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/mssql-tools18_18.4.1.1-1_$architecture.sig
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import -
gpg --verify msodbcsql18_18.4.1.1-1_$architecture.sig msodbcsql18_18.4.1.1-1_$architecture.apk
gpg --verify mssql-tools18_18.4.1.1-1_$architecture.sig mssql-tools18_18.4.1.1-1_$architecture.apk
#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.4.1.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.4.1.1-1_$architecture.apk
Catatan
Driver versi 17.5 atau yang lebih tinggi diperlukan untuk dukungan Alpine.
#Debian 9-11
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
# Debian 12
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 10
curl https://packages.microsoft.com/config/debian/10/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 11
curl https://packages.microsoft.com/config/debian/11/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 12
curl https://packages.microsoft.com/config/debian/12/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributions
sudo apt-get install -y libgssapi-krb5-2
Catatan
Anda dapat mengganti pengaturan variabel ACCEPT_EULA lingkungan dengan mengatur variabel msodbcsql/ACCEPT_EULA debconf sebagai gantinya: echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Kesalahan: Tanda tangan berikut tidak dapat diverifikasi karena kunci publik tidak tersedia
Gejala
Anda mendapatkan kesalahan saat menjalankan apt-get update yang mirip dengan teks berikut:
W: GPG error: https://packages.microsoft.com/debian/12/prod bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EB3E94ADBE1229CF
E: The repository 'https://packages.microsoft.com/debian/12/prod bookworm InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Resolusi
Setelah Anda mengunduh /etc/apt/sources.list.d/mssql-release.list file, edit untuk menghapus nilai.signed-by
Tua:deb [arch=amd64,arm64,armhf signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/12/prod bookworm main
Baru:deb [arch=amd64,arm64,armhf] https://packages.microsoft.com/debian/12/prod bookworm main
Jalankan sudo apt-get update dan lanjutkan penginstalan dari sana.
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#RHEL 7 and Oracle Linux 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 9
curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel
curl -O https://packages.microsoft.com/keys/microsoft.asc
sudo rpm --import microsoft.asc
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#SLES 12
sudo zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
#SLES 15
sudo zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
#(Only for driver 17.3 and below)
sudo SUSEConnect -p sle-module-legacy/15/x86_64
sudo ACCEPT_EULA=Y zypper install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y zypper install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo zypper install -y unixODBC-devel
if ! [[ "18.04 20.04 22.04 23.04 24.04" == *"$(lsb_release -rs)"* ]];
then
echo "Ubuntu $(lsb_release -rs) is not currently supported.";
exit;
fi
# Add the signature to trust the Microsoft repo
# For Ubuntu versions < 24.04
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
# For Ubuntu versions >= 24.04
curl https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
# Add repo to apt sources
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
# Install the driver
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
Catatan
Anda dapat mengganti pengaturan variabel lingkungan 'ACCEPT_EULA' dengan mengatur variabel debconf 'msodbcsql/ACCEPT_EULA' sebagai gantinya: echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Versi sebelumnya
Bagian berikut ini menyediakan instruksi untuk menginstal versi driver Microsoft ODBC sebelumnya di Linux. Versi driver berikut tercakup:
Bagian berikut menjelaskan cara menginstal driver Microsoft ODBC 17 dari shell bash untuk distribusi Linux yang berbeda.
Penting
Jika Anda menginstal paket v17 msodbcsql yang tersedia secara singkat, Anda harus menghapusnya sebelum menginstal msodbcsql17 paket. Ini akan menghindari konflik. Paket msodbcsql17 dapat diinstal berdampingan msodbcsql dengan paket v13.
#Download the desired package(s)
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.5.1-1_amd64.apk
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.apk
#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.5.1-1_amd64.sig
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.sig
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --import -
gpg --verify msodbcsql17_17.10.5.1-1_amd64.sig msodbcsql17_17.10.5.1-1_amd64.apk
gpg --verify mssql-tools_17.10.1.1-1_amd64.sig mssql-tools_17.10.1.1-1_amd64.apk
#Install the package(s)
sudo apk add --allow-untrusted msodbcsql17_17.10.5.1-1_amd64.apk
sudo apk add --allow-untrusted mssql-tools_17.10.1.1-1_amd64.apk
Catatan
Driver versi 17.5 atau yang lebih tinggi diperlukan untuk dukungan Alpine.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
# Debian 12
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 10
curl https://packages.microsoft.com/config/debian/10/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 11
curl https://packages.microsoft.com/config/debian/11/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
#Debian 12
curl https://packages.microsoft.com/config/debian/12/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributions
sudo apt-get install -y libgssapi-krb5-2
Catatan
Anda dapat mengganti pengaturan variabel lingkungan 'ACCEPT_EULA' dengan mengatur variabel debconf 'msodbcsql/ACCEPT_EULA' sebagai gantinya: echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#RHEL 7 and Oracle Linux 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
#RHEL 9
curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel
curl -O https://packages.microsoft.com/keys/microsoft.asc
sudo rpm --import microsoft.asc
#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#SLES 12
sudo zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
#SLES 15
sudo zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
#(Only for driver 17.3 and below)
sudo SUSEConnect -p sle-module-legacy/15/x86_64
sudo ACCEPT_EULA=Y zypper install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y zypper install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo zypper install -y unixODBC-devel
if ! [[ "16.04 18.04 20.04 22.04" == *"$(lsb_release -rs)"* ]];
then
echo "Ubuntu $(lsb_release -rs) is not currently supported.";
exit;
fi
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
Catatan
Anda dapat mengganti pengaturan variabel lingkungan 'ACCEPT_EULA' dengan mengatur variabel debconf 'msodbcsql/ACCEPT_EULA' sebagai gantinya: echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
ODBC 13.1
Bagian berikut menjelaskan cara menginstal driver Microsoft ODBC 13.1 dari shell bash untuk distribusi Linux yang berbeda.
Jika Anda memerlukan Microsoft ODBC Driver 13 untuk diinstal di komputer tanpa koneksi Internet, Anda harus mengatasi dependensi paket secara manual. Microsoft ODBC Driver 13 memiliki dependensi langsung berikut:
Red Hat: glibc, e2fsprogs, krb5-libs, openssl, unixODBC
SUSE: glibc, libuuid1, krb5, openssl, unixODBC
Masing-masing paket ini pada gilirannya memiliki dependensinya sendiri, yang mungkin atau mungkin tidak ada pada sistem. Untuk solusi umum untuk masalah ini, lihat dokumentasi manajer paket distribusi Anda: Red Hat, Ubuntu, dan SUSE
Biasanya juga mengunduh semua paket dependen secara manual dan menempatkannya bersama-sama di komputer penginstalan, lalu menginstal setiap paket secara manual secara bergantian, menyelesaikan dengan paket Microsoft ODBC Driver 13.
Setelah menyelesaikan penginstalan paket, Anda dapat memverifikasi bahwa Microsoft ODBC Driver 13 dapat menemukan semua dependensinya dengan menjalankan ldd dan memeriksa outputnya untuk pustaka yang hilang:
Bagian berikut menjelaskan cara menginstal driver Microsoft ODBC 11 di Linux. Sebelum Anda dapat menggunakan driver, instal manajer driver unixODBC. Untuk informasi selengkapnya, lihat Menginstal Driver Manager.
Langkah-langkah penginstalan
Penting
Instruksi ini mengacu pada msodbcsql-11.0.2270.0.tar.gz, yang merupakan file penginstalan untuk Red Hat Linux. Jika Anda menginstal Pratinjau untuk SUSE Linux, nama filenya adalah msodbcsql-11.0.2260.0.tar.gz.
Untuk menginstal driver:
Pastikan Anda memiliki izin root.
Ubah ke direktori tempat unduhan menempatkan file msodbcsql-11.0.2270.0.tar.gz. Pastikan Anda memiliki file *.tar.gz yang cocok dengan versi Linux Anda. Untuk mengekstrak file, jalankan perintah berikut, tar xvzf msodbcsql-11.0.2270.0.tar.gz.
Ubah ke msodbcsql-11.0.2270.0 direktori dan di sana Anda akan melihat file yang disebut install.sh.
Untuk melihat daftar opsi penginstalan yang tersedia, jalankan perintah berikut: ./install.sh.
Buat cadangan odbcinst.ini. Penginstalan driver diperbarui odbcinst.ini. odbcinst.ini berisi daftar driver yang terdaftar di UnixODBC Driver Manager. Untuk menemukan lokasi odbcinst.ini di komputer Anda, jalankan perintah berikut: odbc_config --odbcinstini.
Sebelum Anda menginstal driver, jalankan perintah berikut: ./install.sh verify. Output ./install.sh verify laporan jika komputer Anda memiliki perangkat lunak yang diperlukan untuk mendukung driver ODBC di Linux.
Ketika Anda siap untuk menginstal driver ODBC di Linux, jalankan perintah: ./install.sh install. Jika Anda perlu menentukan perintah instal (bin-dir atau lib-dir), tentukan perintah setelah opsi instal .
Setelah meninjau perjanjian lisensi, ketik YA untuk melanjutkan penginstalan.
Penginstalan menempatkan driver di /opt/microsoft/msodbcsql/11.0.2270.0. Driver dan file dukungannya harus berada di /opt/microsoft/msodbcsql/11.0.2270.0.
Untuk memverifikasi bahwa driver Microsoft ODBC di Linux berhasil didaftarkan, jalankan perintah berikut: odbcinst -q -d -n "ODBC Driver 11 for SQL Server".
Menghapus instalan
Anda dapat menghapus instalasi driver ODBC 11 di Linux dengan menjalankan perintah berikut:
rm -f /usr/bin/sqlcmd
rm -f /usr/bin/bcp
rm -rf /opt/microsoft/msodbcsql
odbcinst -u -d -n "ODBC Driver 11 for SQL Server"
File driver
Driver ODBC di Linux terdiri dari komponen-komponen berikut:
Komponen
Deskripsi
libmsodbcsql-17. X.so.X.X atau libmsodbcsql-13. X.so.X.X
File pustaka dinamis objek bersama (so) yang berisi semua fungsionalitas driver. File ini diinstal untuk /opt/microsoft/msodbcsql17/lib64/ Driver 17 dan masuk /opt/microsoft/msodbcsql/lib64/ untuk Driver 13.
msodbcsqlr17.rll atau msodbcsqlr13.rll
File sumber daya yang menyertainya untuk pustaka driver. File ini terinstal di [driver .so directory]../share/resources/en_US/
msodbcsql.h
File header yang berisi semua definisi baru yang diperlukan untuk menggunakan driver.
Catatan: Anda tidak dapat mereferensikan msodbcsql.h dan odbcss.h dalam program yang sama.
msodbcsql.h diinstal untuk /opt/microsoft/msodbcsql17/include/ Driver 17 dan di /opt/microsoft/msodbcsql/include/ untuk Driver 13.
LICENSE.txt
File teks yang berisi ketentuan Perjanjian Lisensi Pengguna Akhir. File ini ditempatkan untuk /usr/share/doc/msodbcsql17/ Driver 17 dan di /usr/share/doc/msodbcsql/ untuk Driver 13.
RELEASE_NOTES
File teks yang berisi catatan rilis. File ini ditempatkan untuk /usr/share/doc/msodbcsql17/ Driver 17 dan di /usr/share/doc/msodbcsql/ untuk Driver 13.
Pemuatan file sumber daya
Driver perlu memuat file sumber daya ke fungsi. File ini dipanggil msodbcsqlr17.rll atau msodbcsqlr13.rll tergantung pada versi driver. Lokasi .rll file relatif terhadap lokasi driver itu sendiri (so atau dylib), seperti yang disebutkan dalam tabel sebelumnya. Pada versi 17.1 driver juga mencoba memuat .rll dari direktori default jika pemuatan dari jalur relatif gagal. Jalur file sumber daya default di Linux adalah /opt/microsoft/msodbcsql17/share/resources/en_US/.
Pecahkan masalah
Jika versi driver sebelumnya diinstal dan terdaftar di unixODBC, penginstalan mungkin gagal dengan kesalahan seperti Installation failed, ODBC Driver $1 for SQL Server detected!. Untuk mengatasi masalah ini, batalkan pendaftaran versi driver tersebut. Anda dapat membatalkan pendaftaran driver melalui odbcinst perintah: odbcinst -u -d -n "ODBC Driver $1 for SQL Server. (Ganti $1 dengan versi driver yang dilaporkan dalam kesalahan penginstalan.) Jika penghapusan instalasi melalui odbcinst perintah gagal, Anda dapat menghapus bagian driver secara manual dari odbcinst.ini file. Anda dapat menemukan lokasi odbcinst.ini file melalui perintah odbcinst -j.
Jika Anda tidak dapat membuat koneksi ke SQL Server menggunakan driver ODBC, lihat artikel masalah yang diketahui tentang pemecahan masalah koneksi.