Eu tenho um banco de dados Sybase de terceiros, ao qual meus usuários gostariam de se conectar e consultar a partir de uma máquina Linux, usando iSQL . Eu instalei UnixODBC e FreeTDS . No entanto, como é um banco de dados de terceiros, não consigo executar nenhum GRANT. A consulta falha com o iSQL no Linux:
[42501][unixODBC][FreeTDS][SQL Server]ASA Error -121: Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement
Parece que o SQL real que está sendo enviado pelo iSQL é CREATE PROCEDURE <some temporary name> AS <the actual sql>
. Eu li as páginas de manual iSQL e FreeTDS, mas não há nenhuma dica sobre como desabilitar esse comportamento.
Isso funciona bem em 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
Portanto, acredito que instalei as bibliotecas do cliente Sybase corretamente. Antes de recomendar esta solução, posso, como DBA, fazer alguma coisa para corrigir o iSQL?
Eu já vi isso antes. De acordo com a documentação do Sybase ASE :
No entanto, não tenho certeza se é a interface unixODBC ou a ferramenta isql que está solicitando ao ASE que os trate como procedimentos armazenados/sql dinâmico.