none
Wie kann man EXEC xp_cmdshell über SSRS ausführen? RRS feed

Antworten

  • Du musst den Report unter einem festen Konto laufen lassen, welches sysadmin auf dem SQL Server ist.

    Dann kannst Du in der Prozedur, die Dir später das Dataset liefert alles mögliche anstellen, wie z. B. DTEXEC aufrufen und ähnliches.


    ..

    Nein, also BITTE NICHT

    Bitte kurz zurücklehnen und eine Runde darübr nachdenken, wie man das Ziel sauber erreicht.

    xp_cmdshell ist neben Ole-automation die wohl schlechteste Idee überhaupt.

    Dabei kann die Lösung doch so einfach sein. 2 Varianten als Denkanstoß, da mir nicht alle Requirements bekant sind:

    A) Ein SSIS-Paket mit dem entsprechenden Export-Vorgang. Kapselung in einem Job, der via sp_startjob aufgerufen werden kann

    B) ein Job der einen Kommandozeilenschritt mit bcp-Aufruf enthält. Aufruf wie A)

    usw.. da geht so einiges wie man sieht, wenn man sich nich auf die xp_cmdshell versteift von Anfang an

    Damit sollte man doch auf ein sauberes Konstrukt kommen.

    Bitte 1. Nicht xp_cmdshell aktivieren, schon gar nicht dauerhaft

    2. kein Aufruf der xp_cmdshell aus Reports direkt

    3. Keine Connections als sysadmin

    gutes Gelingen

    Andreas


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform MCSE Data Platform
    MCSM Charter Member, MCITP Charter Member etc.
    www.SarpedonQualityLab.com
    (Founder)

    Freitag, 23. März 2018 11:58

Alle Antworten

  • Warum eigentlich den Umweg über SSRS?

    Mann kann auch direkt per

    insert into MyTable
    Select  * from OtherTable

    Daten auswählen und in eine andere Tabelle kopieren.
    Dies lässt sich ebenso automatisieren:

    https://technet.microsoft.com/en-us/library/ms191129(v=sql.105).aspx

    Donnerstag, 22. März 2018 15:25
  • ...das Problem ist dass ich am Ende wie auch immer eine Textdatei mit den erstellten Variablen erstellen muss um unser DMS-Aufruf zu nutzen. Ich muss es jetzt irgendwie schaffen, über Reportingservices eine Funktion auf dem Server aufzurufen die diese Datei erstellt. Daher der Ansatz dies über

    EXEC xp_cmdshell 'bcp "SELECT * FROM Persons" queryout "C:\bcptest.txt" -T -c -t'

    zu realisieren, die Frage ist nur wie? Vielen Dank für Eure Hilfe!

    Donnerstag, 22. März 2018 17:14
  • Du musst den Report unter einem festen Konto laufen lassen, welches sysadmin auf dem SQL Server ist.

    Dann kannst Du in der Prozedur, die Dir später das Dataset liefert alles mögliche anstellen, wie z. B. DTEXEC aufrufen und ähnliches.


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Freitag, 23. März 2018 06:42
  • Du musst den Report unter einem festen Konto laufen lassen, welches sysadmin auf dem SQL Server ist.

    Dann kannst Du in der Prozedur, die Dir später das Dataset liefert alles mögliche anstellen, wie z. B. DTEXEC aufrufen und ähnliches.


    ..

    Nein, also BITTE NICHT

    Bitte kurz zurücklehnen und eine Runde darübr nachdenken, wie man das Ziel sauber erreicht.

    xp_cmdshell ist neben Ole-automation die wohl schlechteste Idee überhaupt.

    Dabei kann die Lösung doch so einfach sein. 2 Varianten als Denkanstoß, da mir nicht alle Requirements bekant sind:

    A) Ein SSIS-Paket mit dem entsprechenden Export-Vorgang. Kapselung in einem Job, der via sp_startjob aufgerufen werden kann

    B) ein Job der einen Kommandozeilenschritt mit bcp-Aufruf enthält. Aufruf wie A)

    usw.. da geht so einiges wie man sieht, wenn man sich nich auf die xp_cmdshell versteift von Anfang an

    Damit sollte man doch auf ein sauberes Konstrukt kommen.

    Bitte 1. Nicht xp_cmdshell aktivieren, schon gar nicht dauerhaft

    2. kein Aufruf der xp_cmdshell aus Reports direkt

    3. Keine Connections als sysadmin

    gutes Gelingen

    Andreas


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform MCSE Data Platform
    MCSM Charter Member, MCITP Charter Member etc.
    www.SarpedonQualityLab.com
    (Founder)

    Freitag, 23. März 2018 11:58
  • Da gebe ich Dir Recht! ;-)

    Die Variante mit sp_startjob scheint die praktikabelste zu sein!


    Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu

    Freitag, 23. März 2018 12:42