{"id":1306,"date":"2022-12-14T19:15:54","date_gmt":"2022-12-14T19:15:54","guid":{"rendered":"https:\/\/www.hammerdb.com\/blog\/?p=1306"},"modified":"2022-12-14T19:16:14","modified_gmt":"2022-12-14T19:16:14","slug":"configuring-unixodbc-and-sql-server-drivers-for-hammerdb-on-linux","status":"publish","type":"post","link":"https:\/\/www.hammerdb.com\/blog\/uncategorized\/configuring-unixodbc-and-sql-server-drivers-for-hammerdb-on-linux\/","title":{"rendered":"Configuring unixODBC and SQL Server Drivers for HammerDB on Linux"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>In this post, we will do a walk through example of installing and configuring unixODBC and the SQL Server on Linux drivers as well as the HammerDB connection options to enable HammerDB on Linux to be able to connect to SQL Server. In the example, we have SQL Server running on Windows and are using a virtualized Linux instance to run HammerDB to connect to SQL Server.<\/p>\n<h3>unixODBC<\/h3>\n<p>Firstly get unixODBC from here <a href=\"http:\/\/www.unixodbc.org\/\">http:\/\/www.unixodbc.org\/<\/a> and configure making sure the that the &#8211;enable-fastvalidate option is given. In this example, we install in the \/usr\/local directory using the command make and make install after configure.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">.\/configure --prefix=\/usr\/local\/unixODBC --enable-gui=no --enable-drivers=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE --enable-threads=yes --enable-fastvalidate<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Microsoft ODBC Drivers<\/h3>\n<p>Then install the Microsoft ODBC Drivers using the instructions <a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/connect\/odbc\/linux-mac\/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16\">here<\/a>.\u00a0 Once installed, we will see the drivers successfully installed and find the dependent libraries we need.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">root@REDPOLL:\/opt\/microsoft# ls\r\nmsodbcsql17 msodbcsql18\r\nroot@REDPOLL:\/opt\/microsoft# ls msodbcsql18\/lib64\/\r\nlibmsodbcsql-18.1.so.2.1\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>Add the drivers to \/usr\/local\/odbcinst.ini either using the obcinst command or through manual editing of odbcinst.ini.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">root@REDPOLL:\/usr\/local\/unixODBC\/etc# more odbcinst.ini \r\n[ODBC Driver 17 for SQL Server]\r\nDescription=Microsoft ODBC Driver 17 for SQL Server\r\nDriver=\/opt\/microsoft\/msodbcsql17\/lib64\/libmsodbcsql-17.10.so.2.1\r\nUsageCount=1\r\n[ODBC Driver 18 for SQL Server]\r\nDescription=Microsoft ODBC Driver 18 for SQL Server\r\nDriver=\/opt\/microsoft\/msodbcsql18\/lib64\/libmsodbcsql-18.1.so.2.1\r\nUsageCount=1<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>We can verify the configuration and drivers as follows:<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">root@REDPOLL:\/usr\/local\/unixODBC# .\/bin\/odbcinst -j\r\nunixODBC 2.3.11\r\nDRIVERS............: \/usr\/local\/unixODBC\/etc\/odbcinst.ini\r\nSYSTEM DATA SOURCES: \/usr\/local\/unixODBC\/etc\/odbc.ini\r\nFILE DATA SOURCES..: \/usr\/local\/unixODBC\/etc\/ODBCDataSources\r\nUSER DATA SOURCES..: \/usr\/local\/unixODBC\/etc\/odbc.ini\r\nSQLULEN Size.......: 8\r\nSQLLEN Size........: 8\r\nSQLSETPOSIROW Size.: 8\r\n\r\nroot@REDPOLL:\/usr\/local\/unixODBC# .\/bin\/odbcinst -d -q\r\n[ODBC Driver 17 for SQL Server]\r\n[ODBC Driver 18 for SQL Server]\r\n\r\n<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<p>As our hammerdb user we can then set our .bash_profile and ensure that the ODBC drivers are found.<\/p>\n<div class=\"dm-code-snippet dark default  dm-normal-version\" style=\"background-color:#abb8c3;\" snippet-height=\"\">\n\t\t\t<div class=\"control-language\">\n                <div class=\"dm-buttons\">\n                    <div class=\"dm-buttons-left\">\n                        <div class=\"dm-button-snippet red-button\"><\/div>\n                        <div class=\"dm-button-snippet orange-button\"><\/div>\n                        <div class=\"dm-button-snippet green-button\"><\/div>\n                    <\/div>\n                    <div class=\"dm-buttons-right\">\n                        <a id=\"dm-copy-raw-code\">\n                        <span class=\"dm-copy-text\">Copy Code<\/span>\n                        <span class=\"dm-copy-confirmed\" style=\"display:none\">Copied<\/span>\n                        <span class=\"dm-error-message\" style=\"display:none\">Use a different Browser<\/span><\/a>\n                    <\/div>\n                <\/div>\n                <pre class=\"no-line-numbers\"><code id=\"dm-code-raw\" class=\"no-wrap language-php\"><\/p>\n<pre class=\"dm-pre-admin-side\">hammerdb@REDPOLL:~$ more .bash_profile \r\nexport PATH=\"$PATH:\/opt\/mssql-tools\/bin\"\r\nexport PATH=:\/usr\/local\/unixODBC\/bin:$PATH\r\nexport LD_LIBRARY_PATH=\/usr\/local\/unixODBC\/lib:$LD_LIBRARY_PATH\r\nexport ODBCSYSINI=\/usr\/local\/unixODBC\/etc\r\nexport ODBCINI=\/usr\/local\/unixODBC\/etc\/odbc.ini\r\n\r\nhammerdb@REDPOLL:~$ odbcinst -d -q\r\n[ODBC Driver 17 for SQL Server]\r\n[ODBC Driver 18 for SQL Server]<\/pre>\n<p><\/code><\/pre>\n\t\t\t<\/div>\n        <\/div>\n<h3>Test Connectivity<\/h3>\n<p>In this example, as we are running HammerDB for Linux in a VM to connect back to the Windows host we need to either configure or temporarily disable Defender Firewall to allow HammerDB to connect to SQL Server.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/firewall.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1308\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/firewall.png\" alt=\"\" width=\"371\" height=\"39\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/firewall.png 371w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/firewall-300x32.png 300w\" sizes=\"auto, (max-width: 371px) 100vw, 371px\" \/><\/a><\/p>\n<p>And also enable remote connections to SQL Server from SSMS.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/allowremote.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1311\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/allowremote.png\" alt=\"\" width=\"504\" height=\"106\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/allowremote.png 504w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/allowremote-300x63.png 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/a><\/p>\n<p>We also need to use SQL Server Authentication, and set a password for the sa user.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/sapass.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1318\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/sapass.png\" alt=\"\" width=\"514\" height=\"278\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/sapass.png 514w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/sapass-300x162.png 300w\" sizes=\"auto, (max-width: 514px) 100vw, 514px\" \/><\/a><\/p>\n<p>And configure HammerDB to connect from Linux to Windows, and therefore we set the TCP check option as well as using the SQL Server authentication with the user and password we set previously.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/buildoptions.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1310\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/buildoptions.png\" alt=\"\" width=\"473\" height=\"485\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/buildoptions.png 473w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/buildoptions-293x300.png 293w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/a><\/p>\n<h3>Build Schema<\/h3>\n<p>We can now run HammerDB to verify that we can connect to SQL Server from our Linux client.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/building-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1315\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/building-1.png\" alt=\"\" width=\"809\" height=\"673\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/building-1.png 809w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/building-1-300x250.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/building-1-768x639.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<h3>Run Test<\/h3>\n<p>We the build is complete, we can begin running a test from our SQL Server on Linux client.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/runtest.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1322\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/runtest.png\" alt=\"\" width=\"525\" height=\"437\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/runtest.png 809w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/runtest-300x250.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/runtest-768x640.png 768w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>And confirm that our Linux host has connected and is running the workload on SQL Server.<\/p>\n<p><a href=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/activitym.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1321\" src=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/activitym.png\" alt=\"\" width=\"859\" height=\"118\" srcset=\"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/activitym.png 859w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/activitym-300x41.png 300w, https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2022\/12\/activitym-768x105.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<h3>Summary<\/h3>\n<p>In this post, we have shown how to configure the ODBC Drivers for SQL Server on Linux for HammerDB. When the test complete, do not forget to re-enable Windows Firewall if you disabled it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; In this post, we will do a walk through example of installing and configuring unixODBC and the SQL Server on Linux drivers as well as the HammerDB connection options to enable HammerDB on Linux to be able to connect to SQL Server. In the example, we have SQL Server running on Windows and are &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.hammerdb.com\/blog\/uncategorized\/configuring-unixodbc-and-sql-server-drivers-for-hammerdb-on-linux\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Configuring unixODBC and SQL Server Drivers for HammerDB on Linux&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"ppma_author":[5],"class_list":["post-1306","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"authors":[{"term_id":5,"user_id":2,"is_guest":0,"slug":"hammerdb","display_name":"HammerDB","avatar_url":{"url":"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2018\/10\/logo-white.png","url2x":"https:\/\/www.hammerdb.com\/blog\/wp-content\/uploads\/2018\/10\/logo-white.png"},"author_category":"","user_url":"http:\/\/www.hammerdb.com","last_name":"","first_name":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/comments?post=1306"}],"version-history":[{"count":14,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1306\/revisions"}],"predecessor-version":[{"id":1328,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/posts\/1306\/revisions\/1328"}],"wp:attachment":[{"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/media?parent=1306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/categories?post=1306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/tags?post=1306"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.hammerdb.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}