Jump to content

DSN=eventlog Fehler


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen

 

ich habe hier ein script was mir das eventlog in eine SQL DB schreiben soll. nun bekomme ich ein fehler mit der Zeile "DSN=eventlog". meine frage ist nun was muss ich bei DSN eingeben oder was ist falsch daran. ist fast org. script von script portable. ich weis zwar was DSN heisst abe nicht auf was er die Source bezieht!

 

danke um hilfe

hier mein script:

 

Set objConn = CreateObject("ADODB.Connection")

Set objRS = CreateObject("ADODB.Recordset")

 

objConn.Open "DSN=EventLogs;" "!!!!hier bekomm ich die fehlermeldung!!!!"

objRS.CursorLocation = 3

objRS.Open "SELECT * FROM tabelle1" , objConn, 3, 3

strComputer = "."

 

Set objWMIService = GetObject("winmgmts:" _

& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

 

Set colRetrievedEvents = objWMIService.ExecQuery _

("Select * from Win32_NTLogEvent")

 

For Each objEvent in colRetrievedEvents

objRS.AddNew

objRS("Category") = objEvent.Category

objRS("ComputerName") = objEvent.ComputerName

objRS("EventCode") = objEvent.EventCode

objRS("Message") = objEvent.Message

objRS("RecordNumber") = objEvent.RecordNumber

objRS("SourceName") = objEvent.SourceName

objRS("TimeWritten") = objEvent.TimeWritten

objRS("Type") = objEvent.Type

objRS("User") = objEvent.User

objRS.Update

Next

 

objRS.Close

objConn.Close

...muss ich eine ODBC schnittstelle konfig?

Link zu diesem Kommentar

...so wie es aussieht müsste ich ODBC konfig.

 

Möchte dies aber mit dem OLE DB Provider lösen. Ich weis nur nicht wie ich das in das script einbaue!

 

 

Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;User ID=MeineUserID;Initial Catalog=wartung;Data Source=Mein Server.

 

Das ziel ist, dass ich das eventlog in SQL Schreiben kann. Jemand ein plan? ;-)

 

gruss

Link zu diesem Kommentar

Dein umgearbeitetes Script:

Set db = CreateObject("ADODB.Connection")
db.Open("Provider=SQLOLEDB.1;Data Source=MeinServer;UID=MeinUser;PWD=")
sql = "use MeineDatenbank;"
db.Execute(sql)

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colRetrievedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent")

For Each objEvent in colRetrievedEvents
 sql = "INSERT INTO Tabelle1 (Category,ComputerName,Eventcode,Message)"
 sql = sql & "values ('" & objEvent.Category & "','" & objEvent.ComputerName & "','" & objEvent.EventCode & "','" & objEvent.Message & ");"
 db.Execute(sql)
Next

db.Close

"MenServer", "MeineDatenbank" u.ä. natürlich entspr. ändern. Ggf. den Provider deinen gegebenheiten anpassen (bin von MSSQL ausgegangen).

 

Hab das mit dem Recordset durch nen direkten SQL INSERT ersetzt (nur ein paar deiner Felder... war zu Faul ;) )

 

...das alles allerdings ungetestet aus´dem Bauch zusammengeschrieben ;)

Link zu diesem Kommentar

ok vielen dank teste das ntürlich selber gerne aus ;-)

hab das script auch noch ein wenig angepasst. aber hab bei dim type ein fehler, wieso das?

 

hier mein script:

 

strComputer = "."


Set db = CreateObject("ADODB.Connection")
db.Open("Provider=SQLOLEDB.1;Data Source=Mein server;UID=sa;Password=xxx;")
sql = "use wartung;"
db.Execute(sql)


Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colRetrievedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent")

dim Category
dim ComputerNameEV
dim EventCode
dim Message
dim RecordNumber
dim SourceName
dim TimeWritten
dim Type
dim User

Category = objEvent.Category
ComputerNameEV = objEvent.ComputerName
EventCode = objEvent.EventCode
Message = objEvent.Message
RecordNumber = objEvent.RecordNumber
SourceName = objEvent.SourceName
TimeWritten = objEvent.TimeWritten
Type = objEvent.Type
User = objEvent.User

For Each objEvent in colRetrievedEvents
 sql = "INSERT INTO wartung (Category,ComputerNameEV,Eventcode,Message,RecordNumber,SourceName,TimeWritten,Type,User)"
 sql = sql & "values ('" & Category & "','" & ComputerNameEV & "','" & EventCode & "','" & Message & "','" & RecordNumber & "','" & SourceName & "','" & TimeWritten & "','" & Type & "','" & User & "');"
 db.Execute(sql)
Next

db.Close

hat geklappt, das problem war, das die spalte zu wenig zeichen aufnehmen konnte!

Link zu diesem Kommentar

Ich wieder mal, dass script läuft und schreibt das zeug auch schön in die tabellen bekomme dann aber eine fehlermeldung vom script die so heisst:

 

incorrect syntax near 'HOST'

Code: 80040E14

Line 39*

 

was ist an dem syntax nicht i.O funktioniert ja! :)

 

 

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colRetrievedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent")

For Each objEvent in colRetrievedEvents

dim Category
dim ComputerNameEV
dim EventCode
dim Message
dim RecordNumber
dim SourceName
dim TimeWritten
dim nType
dim nUser

Category = objEvent.Category
ComputerNameEV = objEvent.ComputerName
EventCode = objEvent.EventCode
Message = objEvent.Message
RecordNumber = objEvent.RecordNumber
SourceName = objEvent.SourceName
TimeWritten = objEvent.TimeWritten
nType = objEvent.Type
nUser = objEvent.User

Set db = CreateObject("ADODB.Connection")
db.Open("Provider=SQLOLEDB.1;Data Source=rblpqb760; Trusted_Connection=Yes;Initial Catalog=wartung;User ID=sa;Password=xxx;")
sql = "use wartung;"
db.Execute(sql)


 sql = "INSERT INTO wartung (Category,ComputerNameEV,Eventcode,Message,RecordNumber,SourceName,TimeWritten,nType,nUser)"
 sql = sql & "values ('" & Category & "','" & ComputerNameEV & "','" & EventCode & "','" & Message & "','" & RecordNumber & "','" & SourceName & "','" & TimeWritten & "','" & nType & "','" & nUser & "');"
 db.Execute(sql) " fehler soll in dieser zeile sein?!"
Next

Link zu diesem Kommentar

nein darum erstaunt mich das auch ein wenig mit dem HOST!

 

was mir aber aufgefallen ist, dass wen ich das script ausführe und er in die tabellen schreibt, schreibt er anscheinend nicht alles rein.

 

wen ich nähmlich nochmals in der tabelle rechte maus taste "sql execute" mache habe ich mehr einträge als vorher!

 

das heisst ich habe zuerst 80'000 zeilen drin (dan diese Fehlermeldung) in der tabelle und wen ich sql execute mache 92'000. habe dann dies nochmals gemacht um zu sehen ob er noch mehr einträge macht bleibt aber bei 92'000 zeilen.

 

noch was anders: da ich ja noch teste lösche ich die 92'000 zeilen wieder. der hat aber ewig zum löschen, woran kann das liegen? min. 1std bis die weg sind!

 

natürlich hängt dan sql und kann dort nichts mehr machen

Link zu diesem Kommentar

Sind die Tabellen felder alle Char bzw. Strings? Oder gibt's da z.B. auch DateTime o.ä.?

Möglicherweise kommt aus einem Eventlog-Eintrag der Wert "HOST" zurück, wo sonst ein Datum steht oder so...

 

So ein Löschproblem hab ich mal so gelöst:

Um die 100k Zeilen zu löschen hab ich dann statt nem "DELETE..." einfach "DROP TABLE..." und anschliessend wieder "CREATE TABLE..." gemacht ;)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...