Domanda

Stiamo eseguendo parte della nostra app come servizio Windows e deve poter accedere ai DSN per importare tramite ODBC. Tuttavia, sembrano esserci molte restrizioni riscontrate attraverso tentativi ed errori su quali DSN possono accedere. Ad esempio sembra che non possa 1. accedere a un DSN di sistema a meno che l'account che esegue il servizio non disponga dei privilegi di amministratore. (Ottengo un errore di accesso negato quando provo a connettermi) 2. accedere a un DSN utente creato da un altro utente (questo è comprensibile). 3. accedere a un file DSN attraverso la rete

Ho letto che lo scopo di un file DSN è consentire ad altri computer di usarlo per connettersi, tuttavia non riesco a farlo funzionare.

Qualcuno sa, o sa dove posso scoprire quali sono tutte le regole e le restrizioni sull'accesso a un DSN quando si utilizza un servizio Windows. grazie

È stato utile?

Soluzione

Questo è un punto tra il tuo # 1 e # 2: a volte sono necessarie anche le autorizzazioni corrette per i file. Una volta ho avuto problemi su una macchina Vista che si connetteva a un DSN DB2 perché, per qualsiasi motivo (forse per scrivere i file temporanei; anche se non so perché farebbe una cosa del genere in questa posizione anziché in una specifica dell'utente) , il driver aveva bisogno dell'accesso in scrittura alla directory in cui IBM aveva installato i file binari e le librerie client, che era stato fatto da un amministratore e si trovava nella radice dell'unità C.

Altri suggerimenti

Penso che tu abbia già scoperto tu stesso le tre regole principali. : -)

Tranne che probabilmente non hai bisogno dei privilegi di amministratore per il tuo account di servizio. IANANA (non sono un amministratore di rete), ma probabilmente il tuo account di servizio necessita solo dell'accesso in lettura a uno dei file o directory ODBC.

Non è possibile connettersi alle unità mappate con un servizio. Un'unità mappata deve interagire con la memoria chiamata heap del desktop che tiene traccia delle icone sul desktop. I servizi non hanno accesso a quella memoria. Se devi usare un dsn crea un systemdsn. meglio sarebbe usare una stringa di connessione e archiviarla in app.config e usare l'API di crittografia per crittografare il nome utente e la password.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top