我已经尝试了两天,以便让我的Debian 8 Google Cloud计算机连接到Microsoft SQL 2012数据库。我知道数据库是可以的,因为在Windows中这样做没有问题。现在,我试图将一些用Python编写的网站代码从Windows迁移到Debian,但是我无法访问构成网站重点的数据库。

当然,我已经在这个主题上做了很多搜索。经常发生的情况是,我发现了相互矛盾的信息,而每本说“正确”的指南都令我失望。最好的是
FreeTDS email list
没有启动,或者至少是自动拒绝新订阅者。

就像我说的,我在GCloud服务器上的Debian 8上。由于身份验证密钥问题,SCP无法正常工作,因此我只能访问外壳程序,并且只能复制到主目录或从主目录复制。我已经安装了UnixODBC,tdsodbc和freetds,以及一些我发现有人建议的软件包。这都是sudo apt-get的全部来源,而不是来源或任何网站的直接来源。

我的文件不在/etc中,它们在/etc/freetds中。我还找到了一些指南,说我需要sudo cp /etc/freetds/freetds.conf ~/.freetds.conf。注意“。”在目标文件名的开头。我也有/etc/freetds/odbc.ini,它定义了我的DSN。在freetds.conf中,我定义一个数据库条目,并且odbc.ini选项中的“数据库名称”设置为与freetds.conf中的节名称相同的值。我在/etc/odbcinst.ini中定义了我的驱动程序(不,我不知道为什么在/ etc中,但是其他驱动程序在/etc/freetds中)。下面,我粘贴了三个文件。请注意,我从第一个注释中删除了注释,以使此处的内容简短一些。注释在实际文件中是完整的。

我在那里有安装线,还有其他一些,但是
one post I found
说没有那个和其他几行,它会更好。

这是有趣的部分:tsql完美运行-如果我执行tsql -S DBName -U username,它会连接,但是isql每次都会失败,并出现相同的错误。总是如此

[IM002][unixodbc][driver manager] No data source name found, and no default driver specified.
[ISQLERROR]: Could not SQLConnect.

如果我给isql一个根本没有定义的数据库的名称,则会得到完全相同的错误。例如,我会收到IM002错误,
isql -v testabc

这向我表明,某些东西没有找到它需要的所有configuration/ini文件。但是tsql works,而isql(当然还有我的Python脚本)不起作用。我是Debian的新手,并且只能通过SSH访问该Debian机器,因此我无法使用GUI工具来简化此操作。我对Bash和VIM相当满意,我只是不知道哪个包在哪里寻找什么文件。我也不知道应该采取哪些措施或重新投入使用,以使工作正常进行。

最佳答案

为了使此工作正常,我第一篇文章中详细介绍的配置实际上可以正常工作。唯一的问题是odbc.ini放在错误的位置。sudo cp /etc/freetds/odbc.ini /etc/odbc.ini会成功的或者只是首先将odbc.ini(您可能必须创建)放在/etc中。显然只有freetds.conf属于/etc/freetds

关于debian - 无法使用FreeTDS连接到Debian 8上的MS SQL 2012数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37053714/

10-11 10:39