Jump to content

SQL Tabellen


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

Empfohlene Beiträge

halli hallo

 

dieses script erstellt mir im SQL Tabellen von CLients. Und in diese Tabellen sollten dann die entsprechenden eventlogs abgelegt werden.

trComputer = "[%computername%]"

Set WshNetwork = WScript.CreateObject("WScript.Network")


set db = CreateObject("ADODB.Connection")
db.Open("Provider=SQLOLEDB.1;Data Source=Server;UID=sa;PWD=xxxx")
sql = "use wartung;"
db.Execute(sql)

sql=  "IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'" & strComputer & "') "
sql=sql & "AND OBJECTPROPERTY(id, N'IsUserTable') = 1) "
sql=sql & "CREATE TABLE " & strComputer & " (Category int NOT NULL , ComputerNameEV varchar (30) NULL , Eventcode varchar (30) NULL , Message varchar (30) NULL ,"
sql=sql & "Recordnumber int NULL , Sourcename int NULL ,"
sql=sql & "timewritten int NULL , ntype int NULL , nuser int NULL );"

db.Execute (sql)
db.close

 

somit habe ich von allen PC Systemen in der DB Wartung eine Tabelle mit entsprechenden clients vorhanden. soweit so gut...nun möchte ich die eventlogs entsprechend in SQL Tabellen der Systeme speichern und danach das event leeren.

 

für das event zu schreiben habe ich folgendes script. bitte verschohnt mich damit, dass man die events im log bleiben sollen. ich will es so ;-)

strComputer = "[%ComputerName%]"

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=Server; Trusted_Connection=Yes;Initial Catalog=wartung;User ID=sa;Password=xxx;")
sql = "use wartung;"
db.Execute(sql)
'set rs = 

 sql = "INSERT INTO strcomputer(Category,ComputerNameEV,Eventcode,Message,RecordNumber,SourceName,TimeWritten,nType,nUser)"
 sql = sql & "values ('" & Category & "','" & ComputerNameEV & "','" & EventCode & "','" & Message & "','" & RecordNumber & "','" & SourceName & "','" & TimeWritten & "','" & nType & "','" & nUser & "');"
 db.Execute(sql)
Next
'db.close

 

nur bei insert into strcomputer versteht er das nicht ganz :)

wo ist mein problem?

 

vielen dank für hilfe!

Link zu diesem Kommentar

ok danke werd ich mal testen

 

danke

bekomme immer noch die selbe meldung:

Script: c:\document and settings\meinprofil\localsettings\temp\2\meinclientsc.vbs

Line:3

char:1

error: the remote server machine does not exist or is unavailable: 'GetObject'

code:800A01CE

Source: Microsoft VBScript runtime error

...ist es möglich das ich mit den tabellen ein durcheinander habe in den scripts?

ich mein jetzt nicht, dass die spalten nicht übereinstimmen sondern ob die anweisung in die spezifischen tabellen nicht korrekt sind. das er vielleicht mit der variable strcomputer trotzdem nicht "weis" zu welcher tabelle er es einfügen soll?

Link zu diesem Kommentar

Moin,

 

bekomme immer noch die selbe meldung:

 

nein, es ist offensichtlich eine andere.

 

Line:3

char:1

error: the remote server machine does not exist or is unavailable: 'GetObject'

 

In Zeile 3 versuchst du ein WMI-Objekt zu erzeugen für den Computer, dessen Name in trComputer hinterlegt ist. Der String, der dort drinsteht, lautet: "[%computername%]" - und so heißt ganz gewiss kein Windows-Computer.

 

Kann es sein, dass Scripting nicht deine Domäne ist? Dann würde ich an deiner Stelle nicht unbedingt die Eventlogs durch ein Skript löschen lassen ...

 

Gruß, Nils

Link zu diesem Kommentar
was "[%computername%]" betrifft hast du leider keine ahnung! dies ist ein eine variable aus einer software. ist wie "." alles klar?

behaupte nur sachen was du auch wirklich weist!

 

Dass das eine Variable aus einer Software ist, glaub ich gerne.

Dass man auf Umgebungsvariablen aus einem VB-Script genauso zugreift, wie mittels DOS-Batch... glaub ich jedoch nicht!

 

Mach doch vorsichtshalber mal unter die Zeile mit der strComputer-Zuweisung eine

MsgBox strComputer

 

Steht da dann wirklich der korrekte Computername?

Link zu diesem Kommentar

@cybquest

 

du hast doch mal mein script auch schon angepasst mit zeit und defrag usw. so falls du dich noch erinnerst.

dort ist als strcomputer auch "[%computername%]" und dies funktioniert :)

 

richtiger pc name

 

habe erstmals den fehler gefunden wieso der nicht den pc namen richtig anzeigt. dies muss richtig geschrieben werden so:"[%ComputerName%]" und nicht so "[%computername%]" :)

Link zu diesem Kommentar

Der Punkt ist übrigens keine Variable, sondern ein Punkt!

Und der funktioniert nur für "GetObjekt" um auf den lokalen Computer zuzugreifen!

 

Für deine SQL-Statements solltest du dir auf jeden Fall eine korrekte Variable hernehmen.

 

EDIT: Schau Dir die Scripte von "damals" nochmal genau durch. Irgendwo wird die Variable Computername gesetzt! Und den Teil hast du vermutlich bei diesen Scripten vergessen.

 

EDIT2:

Nur mal so als "Anregung" aus einem alten Post


strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_ComputerSystem",,48)

For Each objItem in colItems
strComputer = objItem.DNSHostName
Next

[/Code]

Link zu diesem Kommentar

@cybquest

 

die variable computerName funktioniert und schreibt auch in die entsprechende computertabelle.

bricht aber danach mit dem fehler error: incorrect syntax near 's'

code 80040e14 wieder ab mit schreiben in die tabelle.

 

@Dr.Melzer

Zitat von Nils: Kann es sein, dass Scripting nicht deine Domäne ist? Dann würde ich an deiner Stelle nicht unbedingt die Eventlogs durch ein Skript löschen lassen ...

 

hier wird mir nicht ans bein gepinkelt Dr. Melzer?

wen ich doch hier meine frage stelle für dies ist doch dieses forum da oder?

wen ich es ja wüsste würd ich hier ja nicht rein schreiben oder? also was soll dan dieser komentar von nils. ich bin hier nicht seit 1 monat dabei und hatte noch nie probleme mit user von hier! neben bei erwähnt

gruss bergesel

Link zu diesem Kommentar

@bergesel

Zum Anpinkel-Thema: Ich bin durchaus auch der Meinung, dass Du Nils gegenüber extrem überreagiert hast!

 

Zum Script: Wie man ein einfaches Debugging mittels "Msgbox" durchführt, hab ich jetzt hinreichend erwähnt. Wenn du Fehlermeldungen bekommst, bau halt einfach mal welche ein und lass dir die entspr. zusamengebastelten Strings ausgeben.

Poste diese dann gleich mit, dann können wir nach "incorrect syntax" fahnden.

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...