3

我需要从 Ubuntu Server 16.04 访问带有 OGR2OGR 的 Microsoft SQL Server。它在微软上工作,所以基本设置很好。

我的问题是,当我运行我的 OGR2OGR 命令时(在使用 sudo apt-get install gdal-bin 安装 GDAL 之后):

ogr2ogr -overwrite -f MSSQLSpatial "MSSQL:server=tcp:<DATABASE_SERVER>,<PORT>;database=<DATABASE_NAME>;uid=<USER>;Pwd=<PASSWORD>;" "<IMPORT PATH FILE>" -nln "<TABLE NAME>" -progress

我得到错误:

错误 1:无法初始化与 MSSQL 的服务器的连接:“DATABASE_SERVER”;[unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found 尝试在可用驱动程序列表中的连接字符串中指定驱动程序:

我尝试根据说明安装 Microsoft ODBC Driver for SQL Server,但安装 gdal 时无法安装。错误是:

某些软件包无法安装。这可能意味着您请求了一种不可能的情况,或者如果您使用的是不稳定的发行版,一些必需的软件包尚未创建或已从 Incoming 中移出。以下信息可能有助于解决这种情况:

以下软件包具有未满足的依赖关系: msodbcsql:依赖:unixodbc-utf16 (>= 2.3.1-1) 但不会安装 E:无法纠正问题,您持有损坏的软件包。

一段时间后,我设法安装了 Microsoft ODBC 驱动程序,但这意味着要删除 GDAL。所以我可以拥有 GDAL 或 Microsoft ODBC 驱动程序。有没有办法解决这个问题?

谢谢你的帮助!

更新(2017.01.03):我找到了以下解决方案,并且我还评论了 MSDN 博客上的相应文章(到目前为止没有回复)here

如果还没有安装 UnixODBC

sudo apt-get install unixodbc unixodbc-dev

从某处下载:msodbcsql-11.0.2270.0.tar.gz(使用 msodbcsql-13.xxxtar.gz 可能会更好,但我找不到它)和

tar xvfz msodbcsql-11.0.2270.0.tar.gz
cd msodbcsql-11.0.2270.0
ldd lib64/libmsodbcsql-11.0.so.2270.0

如果缺少依赖项安装它们,在我的情况下可以这样做:(除了 apt-get install 之外的所有内容都是通过创建链接来修复文件的命名:)

sudo apt-get install libssl1.0.0 libssl-dev
cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10

安装和清理:

sudo bash ./install.sh install --force --accept-license

rm -rf /tmp/msodbcubuntu

如果使用它的工具找不到驱动程序(例如 ogr2ogr 或 pyodbc),请编辑 /etc/odbcinst.ini 并为 [SQL Server] 创建一个连接器

[SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=2
4

1 回答 1

1

无耻地来自:https ://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17

验证

ogr2ogr --formats

然后应该列出:

MSSQLSpatial -vector- (rw+): Microsoft SQL Server Spatial Database
于 2020-02-22T05:56:02.007 回答