我有一个第三方 Sybase 数据库,我的用户希望使用iSQL连接到 Linux 机器并从中查询。我已经安装了UnixODBC和FreeTDS。但是,由于它是第三方数据库,因此我无法执行任何 GRANT。Linux 上的 iSQL 查询失败:
[42501][unixODBC][FreeTDS][SQL Server]ASA Error -121: Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement
看来 iSQL 发送的实际 SQL 是CREATE PROCEDURE <some temporary name> AS <the actual sql>
. 我已阅读 iSQL 和 FreeTDS 联机帮助页,但其中没有关于如何禁用此行为的提示。
这在 Python 中工作正常:
>>> import Sybase
>>> db = Sybase.connect('host:port', 'user', 'password', 'db')
>>> c = db.cursor()
>>> c.execute('select table_name from systable')
>>> len(c.fetchall())
570
所以我相信我已经正确安装了 Sybase 客户端库。在我推荐这个解决方案之前,作为 DBA,我可以做任何关于修复 iSQL 的事情吗?
我以前见过这个。根据Sybase ASE 文档:
但是,我不确定是 unixODBC 接口还是 isql 工具要求 ASE 将它们视为存储过程/动态 sql。