Jump to content

SQL Tabelle erstellen wen nicht vorhanden


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 wieder mal, ich möchte gerne eine tabelle erstellen wen sie nicht vorhanden ist. dass heisst er soll mit dem PC name die Tabelle erstellen und die spalten sind dann gegeben. jetzt hab ich hier mal was gefunden und zusammen gestellt. nur der syntax ist hier bei if not exist nicht ganz klar und falsch!

 

strComputer = "."

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

dim computername

computername = strComputer

IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N’[dbo].[Computername]‘)
AND OBJECTPROPERTY(id, N’IsUserTable’) = 1)
CREATE TABLE [dbo].[Computername] ( columns specification );

sql="CREATE TABLE Computername (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


 

 

danke um hilfe

 

gruss bergesel

Link zu diesem Kommentar

Zunächst: An der Stelle funktioniert das "IF NOT EXIST.." natürlich nicht!

Ist ja SQL-Syntax, d.h. müsste entspr. "verpackt" werden.

Weiterhin muss der Teil [dbo].[Computername] bzw. "Computername" auch durch die entspr. Variable ersetzt werden.

Und diese ist in deinem Script momentan ein Punkt! Das geht natürlich nicht!

 

Hier zur Anregung (ungetestet ;)

...
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 );"

Link zu diesem Kommentar

...dachte ich doch das du mir eine antwort gibst! ;-) -danke

 

aber die variable Computername versteht er so nicht *.* , dass er dies einfügen muss und als tabelle daraus erstellen soll? wie müsste ich sonst den computername als variable einfügen damit das script arbeiten kann? muss ich zuerst noch eine DNS Host abfrage machen und das resultat als variable weitergeben?

 

danke

Link zu diesem Kommentar

vielen dank habe ich getestet und dann mit WMI abfrage auch versucht.

bekomme aber eine komische meldung zurück. "incorrect syntax near "€" "

 

ob ich es mit deiner computer abfrage oder mit meiner mache.

mein script nun so aus.

 

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

'Set WshNetwork = WScript.CreateObject("WScript.Network")
'strComputer = WshNetwork.ComputerName

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)
next

 

...übrigens kannst du mir ein gutes buch empfehlen was solche sachen anbelangt? hab eins windows scripting aber mit sehr wenig SQL dazu!

 

gruss

vielen dank habe ich getestet und dann mit WMI abfrage auch versucht.

bekomme aber eine komische meldung zurück. "incorrect syntax near "€" "

 

ob ich es mit deiner computer abfrage oder mit meiner mache.

mein script nun so aus.

 

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

'Set WshNetwork = WScript.CreateObject("WScript.Network")
'strComputer = WshNetwork.ComputerName

set db = CreateObject("ADODB.Connection")
db.Open("Provider=SQLOLEDB.1;Data Source=Server;UID=sa;PWD=xxxxxx")
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)   "hier soll der syntax fehler sein!"
next

 

...übrigens kannst du mir ein gutes buch empfehlen was solche sachen anbelangt? hab eins windows scripting aber mit sehr wenig SQL dazu!

 

gruss

 

sry für doppelpost....netz ist ein wenig lahm und ich ungeduldig!

Link zu diesem Kommentar

Kannst mal vor den db.execute ne Zeile "Msgbox sql" einfügen und nachschauen, wo das Euro-Zeichen sitzt?

 

EDIT: Meine SQL-Kenntnisse hab ich eher aus dem Access/MSSQL/Oracle-Bereich. Wie wir Schwaben sagen: "Des isch so no gworrä" ;)

 

Im Buch "Scripting für Administratoren" von Microsoft Press gibt's allerdings auch einiges zum Thema Datenbanken!

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