Windows SQL Server

KekschenPaddy

Cadet 4th Year
Registriert
Aug. 2013
Beiträge
123
Hallo zusammen,

ich kenne mich damit leider 0 aus und hoffe das es ein relativ simples Thema ist.
Es liegt ein SQL Query vor, welches automatisch nächtlich ausgeführt werden soll und die .csv Datei die entsteht, soll auf einen FTP per Automatismus übertragen werden.

Wie lässt sich das ganze realisieren?

Es gibt wohl einen SQL Agent, sodass man dort einen Task mit dem Query anlegen kann.
Ist die Konfig dort relativ simpel und selbsterklärend?

Ich installiere mir die Tage eine VW um es zu testen.
 
bei M$ gibt es das SQL-Managment Studio.
Da kann man wartungspläne und tasks einrichten. Ob das Teil auch einen upload auf FTP-Server macht weiß ich jetzt nicht
 
linux oder windows?

ich würde ein skript schreiben, dass periodisch ausgeführt wird und danach direkt die daten aufs gegebene ziel hoch lädt.

FTP bitte mit schlüsselpaar als sftp betreiben, wenn der von außen erreichbar ist. FTP Server mit einfach nur nutzername und passwort sind keine gute Idee

als PS script sieht das grob so aus:
PowerShell:
write-host "Reading from SQL"
[string]$SQLConnection = "Server=Server\instanzname,port;Database=datenbank;Integrated Security=True"
[string]$SQLQuery = "Select * from tabellenname"
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter ($SQLQuery,$SQLConnection)
$DataSet = New-Object System.Data.DataSet
$result = $SqlAdapter.Fill($DataSet)
if ($result -ne 1) {
    write-error "Keine SQL-Daten erhalten"
    exit
}
write-host "  erhaltene tabellen: $result"
$count = 0
$DataSet.Tables[0] | %{
    $count = $count +1
    write-host "  SQLTable ($count):" $_
}

datei auf sftp server hoch laden (generisch:
PowerShell:
# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"

# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = "example.com"
    UserName = "user"
    Password = "mypassword"
    SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
}

$session = New-Object WinSCP.Session

try
{
    # Connect
    $session.Open($sessionOptions)

    # Upload
    $session.PutFiles("C:\FileDump\export.txt", "/Outbox/").Check()
}
finally
{
    # Disconnect, clean up
    $session.Dispose()
}


oder unter linux als bash script:

Bash:
#run query
DBSERV=db.example.com
FTPSERV=ftp.example.com
sqlcmd -S $DBSERV -E -i query.sql -d DB_Name -W

#upload file
sftp -v -oIdentityFile=/path/to/publickey user@$FTPSERV <<EOF
put /local/path/to/csv.file /home/user/blubb/csv.file
EOF

und das dann halt automatisier so oft laufen lassen wie du es brauchst. (nicht vergessen die query, dateipfade und serveradressen Einzutragen

Im prinzip kannst du auch direkt vom FTP Server aus die query laufen lassen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Skysnake, KekschenPaddy, PHuV und eine weitere Person
Für automatisch ist unter Linux Cron Job bzw Systemd Timer Unit dass richtige Schlagwort.

Ansonsten wie so oft. Unter Windows kann man das machen ist aber fast immer mehr Arbeit als unter Linux. Sieht man ja auch mal wieder am Vergleich zwischen PowerShell und bash.
 
Zurück
Oben