Domanda

Ho un terzo database Sybase, che i miei utenti vorrebbero connettersi e query da una macchina Linux, utilizzando iSQL . Ho installato UnixODBC e FreeTDS . Come è base di dati di terze parti tuttavia, non sono in grado di eseguire eventuali finanziamenti. La query non riesce con iSQL su Linux:

[42501][unixODBC][FreeTDS][SQL Server]ASA Error -121: Permission denied: you do not have permission to use the "CREATE PROCEDURE" statement

Sembra che l'SQL effettivo che viene sempre inviato dal iSQL è CREATE PROCEDURE <some temporary name> AS <the actual sql>. Ho letto le pagine di manuale e ISQL FreeTDS ma non v'è alcun accenno in là su come disattivare questo comportamento.

Questo funziona bene in 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

Quindi, credo di aver installato correttamente le librerie client Sybase. Prima vi consiglio questa soluzione, invece, posso come un DBA nulla fissaggio iSQL?

È stato utile?

Soluzione

Ho visto questo prima. Secondo il Sybase ASE Documentazione :

Adaptive Server Enterprise implementa SQL dinamico utilizzando stored procedure temporanee. Una stored procedure temporanea viene creata quando un'istruzione SQL è preparato, e distrutto quando quella dichiarazione preparata viene deallocato ... [a] sa conseguenza di questa implementazione, un'applicazione accesso Adaptive Server e utilizzando Dynamic SQL è soggetto alle restrizioni di Adaptive Server stored procedure.

Tuttavia, non sono sicuro se è l'interfaccia unixODBC, o lo strumento isql, che chiede l'ASE per il trattamento di questi come stored procedure / SQL dinamico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top