none
Welchen Usernamen verwendet xp_dirtree? (undokumentierte Prozedur) RRS feed

  • Frage

  • Ich möchte mit TSQL eine Liste der Dateien erstellen, die in einem Ordner im Dateisystem einer AS400 gespeichert sind.

    Soweit ich gegoogelt habe, geht das mit TSQL nur mit der undokumentierten Prozedur xp_dirtree. (xp_cmdshell ist deaktiviert.)

    Ich würde gerne ohne xp_dirtree auskommen, finde aber dazu nichts. Jede Alternative zu xp_dirtree ist herzlich willkommen!

    Zu meinem Problem:

    master.sys.xp_dirtree  zeigt mir keine Liste der Dateien an, weil mir Berechtigungen dazu fehlen. Welcher User wird vom SQL-Server verwendet um auf das Dateisystem zuzugreifen? Wenn ich den Usernamen weiss, kann ich diesen auf der AS400 anlegen und ihm den Zugriff erlauben.

    EXEC master.sys.xp_dirtree '\\meineas400\ordner',1,1 liefert ein leeres Ergebnis.

    Im Windows Dateisystem (also nicht auf der AS400) des SQL-Servers habe ich das selbe Problem, ich bekomme nur ein Ergebnis, wenn die Ordnerberechtigung für die Gruppe "Users" der Domain gesetzt ist. Ich weiss aber dennoch nicht, welcher User nun genau vom SQL-Server verwendet wird. (Zur Info, auf der AS400 werden fehlgeschlagene Zugriffe nicht aufgezeichnet, wenn sie nur das Dateisystem/Ordnerfreigabe betreffen, da hat mein Techniker nichts in den Logs gefunden.)

    lg

    arno

    • Bearbeitet cavallino Mittwoch, 20. August 2014 07:57
    Mittwoch, 20. August 2014 07:57

Antworten

  • Es ist SQL Server (MSSQLServer)" (="Netzwerkdienst)

    Bei den vielen Steps würde ich das eher mit einer Applikation oder PowerShell automatisieren statt es über T-SQL + einigen manuellen Tätigkeiten zu lösen.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert cavallino Mittwoch, 20. August 2014 12:50
    Mittwoch, 20. August 2014 11:32

Alle Antworten

  • Hallo Arno,

    für den Zugriff wird das Dienstkonto des SQL Servers verwendet.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 20. August 2014 08:15
  • Hallo Arno,
    ich habe das nicht ausprobiert, aber immerhin diesen Code dazu gefunden:
    http://iprodeveloper.com/rpg-programming/udtf-ifs-directories

    Man erstellt sich eine UDTF auf der iSeries Maschine und könnte dann per SQL darauf zugreifen. Ein Verbindungsserver für iSeries einzurichten sollte ja kein Problem sein, oder?

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Mittwoch, 20. August 2014 09:21
  • Entschuldige bitte die blöde Frage:

    Ist das (in der Regel) "SA" oder

    der Benutzer vom Dienst "SQL Server (MSSQLServer)" (="Netzwerkdienst) oder

    der Benuter vom Dienst "SQL Server Agent (MSSQLSERVER)" (=MeinAdminxy)

    lg

    arno

    Mittwoch, 20. August 2014 11:04
  • Danke für den Link, der ist aber leider nur für registrierte Benutzer!

    Auf der iSeries will ich nicht programmieren, da ich eine unbekannte Anzahl von CSV-Dateien per Mail (Exchange) bekomme, die werden in einem Ordner abgespeichert. Dann will ich per SQL-Server die Daten bearbeiten (Fehlerprüfungen), und wieder als CSV-Datei zusammenfassen und auf der iSeries als CSV speichern. Diese Datei wird dann von meiner Warenwirtschaft mit einem Standard-Schnittstellenprogramm eingelesen. Problem: Entweder die gemailten Dateien sind von der iSeries zu lesen oder die fertige Schnittstellendatei muss dort gespeichert werden, einmal muss ich immer auf iSeries kommen.

    lg

    arno

    Mittwoch, 20. August 2014 11:11
  • Es ist SQL Server (MSSQLServer)" (="Netzwerkdienst)

    Bei den vielen Steps würde ich das eher mit einer Applikation oder PowerShell automatisieren statt es über T-SQL + einigen manuellen Tätigkeiten zu lösen.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert cavallino Mittwoch, 20. August 2014 12:50
    Mittwoch, 20. August 2014 11:32
  • Danke!

    Netzwerkdienst hat 14 Buchstaben, iSeries Benutzer maximal 10...

    Ich denke mittlerweile, ich befülle besser eine Tabelle auf der iSeries als ein CSV zur Verfügung zu stellen. 

    lg

    arno

    Mittwoch, 20. August 2014 12:49