【发布时间】:2016-12-20 13:30:45
【问题描述】:
我需要从 Ubuntu Server 16.04 访问带有 OGR2OGR 的 Microsoft SQL Server。它在 Microsoft 上运行,所以基本设置很好。
我的问题是,当我运行我的 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][驱动程序管理器]无法打开库“SQL Server”:找不到文件 尝试从可用驱动程序列表中指定连接字符串中的驱动程序:
我尝试根据this指令安装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.x.x.x.tar.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
【问题讨论】:
标签: sql-server gis ubuntu-16.04 gdal ogr2ogr