2012-04-03 10 views
4

Ok, also habe ich ein Skript, das mit einer mssql db verbindet, und ich muss als Dienst ausgeführt werden, den ich bereits ausgeführt habe, aber wenn ich es als Dienst ausführen überschreibt es Meine Anmeldeinformationen, die ich eingegeben habe, als ich mit dem Ad-Computer-Konto eine Verbindung zur Datenbank herstellte.Fehler beim Anmelden als 'Domäne ComputerName' pyodbc mit py2exe

Es läuft perfekt, wenn ich es alleine und nicht als Service betreibe.

My Connection String ist:

'DRIVER={SQL Server};SERVER=MyServer;DATABASE=MyDB;UID=DOMAIN\myusername;PWD=A;Trusted_Connection=True'

Der Fehler ist:

Error: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'DOMAIN\COMPUTERNAME')

Jede Beratung?

+0

Was ist Ihre ODBC-Verbindungszeichenfolge? Welche Fehlermeldungen sehen Sie im Ereignisprotokoll? –

+1

'DRIVER = {SQL Server}; SERVER = SERVERNAME; DATABASE = DBName; UID = BENUTZERNAME; PWD = PASSWORD; Trusted_Connection = True' – ChrisMcKenzie

+0

Anmeldung fehlgeschlagen für Benutzer 'CORE \\ DEEPTHOUGHT $ – ChrisMcKenzie

Antwort

1

Die folgende Verbindungszeichenfolge verwendet die Windows-Authentifizierung und verwendet das Konto, das den Dienst ausführt, um sich bei der Datenbank zu authentifizieren. Ändern Sie das Dienstkonto ein, die Zugriff auf die Datenbank hat:

'DRIVER={SQL Server};SERVER=SERVERNAME;DATABASE=DBName;Trusted_Connection=yes'

ändern Dienstkonto:

  • Start -> Ausführen -> services.msc
  • Rechtsklick auf Service -> Eigenschaften
  • Registerkarte Anmelden
  • OK/Änderungen
sparen

Screenshot of window to change service account

+1

Theunilife erwähnt "überschreibt meine Anmeldeinformationen" in der Frage. Er möchte die 'RunAs'-Berechtigung im Job verwenden. Es bedeutet, dass er eine gesicherte Verbindung verwenden möchte. –

+0

@AnthonyKong Ich interpretierte es so, wie er die 'UID'- und' PWD'-Werte verwenden wollte ... so oder so wird meine Antwort aktualisiert, um beide Methoden zur Authentifizierung einzuschließen. – Bryan

+0

Anthony hatte recht Vielen Dank! – ChrisMcKenzie

2

Im letzten Projekt arbeitete ich an, fand ich, dass DRIVER={SQL Server};SERVER=SERVERNAME;DATABASE=DBName ausreichen, um eine DB-Verbindung im gesicherten Modus zu starten.

Wenn es immer noch nicht funktioniert, ist es wahrscheinlich entweder

1) das Konto DEEPTHOUGHT auf MSSQL-Server nicht richtig konfiguriert ist.

2) die RunAs im Dienst ist nicht richtig eingerichtet (warum Fehlermeldung erwähnt ‚Computernamen‘ anstelle von ‚Deep Thought‘?)