Benutzer mit den meisten Antworten
Wie kann man EXEC xp_cmdshell über SSRS ausführen?

Frage
-
Hallo zusammen,
ich möchte eine über ein Dataset auf dem SQL-Server erzeugte Tabelle per
EXEC xp_cmdshell 'bcp "SELECT * FROM Persons" queryout "C:\bcptest.txt" -T -c -t'; wegschreiben. Wie kann ich die Funktion vom SSRS aufrufen und welche Restriktionen sind zu beachten damit dies zum Erfolg führt:
Leider komme ich mit dem Lösungsansatz nicht weiter und frage mich wie und ob man dies über SSRS realisieren kann. Ich bin für jede Hilfe dankbar.
https://www.mssqltips.com/sqlservertip/1633/simple-way-to-export-sql-server-data-to-text-files/
https://msdn.microsoft.com/de-de/library/ms190693(v=sql.120).aspx
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)- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 26. März 2018 13:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 4. April 2018 12:52
Alle Antworten
-
Warum eigentlich den Umweg über SSRS?
Mann kann auch direkt per
insert into MyTable
Select * from OtherTableDaten 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
-
...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!
-
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
-
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)- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 26. März 2018 13:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 4. April 2018 12:52