我正在尝试从 Ubuntu 上的 QGIS 连接到 SQL Server (MSSQL) 数据库。
根据以下链接,我创建了一个 odbc.ini 文件和驱动程序 -
https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql-server-ver15 和 https: //learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15#ubuntu18
[TEST]
Driver = ODBC Driver 17 for SQL Server
# Server = [protocol:]server[,port]
Server = tcp:xxx,1433
在配置 Windows ODBC 后,我可以从 Windows 机器上的 QGIS 连接到它,所以我很确定这不是服务器/数据库上的权限问题,而是 Ubuntu 20.4 机器上的驱动程序/连接字符串有问题。
我还尝试了https://gis.stackexchange.com/a/216422/2891中的解决方案。
更新
我现在尝试了以下解决方案来使用 docker 安装 QGIS?https://gis.stackexchange.com/a/333581/2891
并查看了有关在 Ubuntu 20.4 中创建 ODBC 链接的许多建议,例如https://help.interfaceware.com/kb/904和http://guywyant.info/log/206/connecting-to-ms-sql-server-from -ubuntu/
我在哪里使用 tsql/telnet 得到响应,但是
isql -v MSSQL devuser 'devpass'
给我
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
我能够从我正在添加 ODBC 连接以使用 Azure Data Studio 和 Beekeeper Studio 的机器连接到数据库,没有任何问题。只是 ODBC 连接和需要此功能的软件(如 QGIS)不起作用。
有人在他们的机器上运行这个吗?很高兴用积分奖励完整的答案...
更新 2 因此,在运行以下命令后,我得到了基本连接,但仍然无法连接到 QGIS。可以为这最后一块拼图做些什么?
~# sudo curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add
~# sudo curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.list
~# sudo apt-get update
~# sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
~# isql -v -k "DRIVER={ODBC Driver 18 for SQL Server};SERVER=tcp:111.111.111.11,1433;UID=Test;PWD=*****;Authentication=SqlPassword;TrustServerCertificate=Yes"
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from [Test].[dbo].[Optic_Fibre]
这里的关键点是缺少依赖项:libqt5sql5-odbc 和/或 libqt5sql5-tds。
这里有一个完整的指南:
按照https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server上的说明安装 Microsoft SQL Server 驱动程序
检查 /etc/odbcinst.ini 的内容以确保列出了 FreeTDS 和 MS SQL Server 驱动程序:
确保驱动程序和数据源名称后的值与 /etc/odbcinst.ini 中列出的驱动程序名称匹配
使用 isql 命令模板测试您的连接:
例如:
重命名、删除或备份文件 /usr/local/etc/odbc.ini 和 /usr/local/etc/odbcinst.ini
创建指向 odbc ini 文件的符号链接:
sudo ln -s /etc/odbcinst.ini /usr/local/etc/odbcinst.ini sudo ln -s /etc/odbc.ini /usr/local/etc/odbc.ini
在 GIS Desktop 中,添加一个 MSSQL 连接,如下例所示: