XP_DirTree dans SQL Server
Variations ont été posées. Je n'ai aucun problème à la recherche d'un répertoire local avec le morceau de code ci-dessous.
EXEC MASTER.sys.xp_dirtree 'C:\', 1, 1
Lorsque je change le chemin d'accès à un emplacement réseau, les résultats sont vides.
EXEC MASTER.sys.xp_dirtree '\\Server\Folder', 1, 1
J'ai d'abord pensé que c'était peut-être quelque chose à voir avec les autorisations. J'ai ajouté le Service SQL Server de la liste de contrôle d'accès sur le volume partagé ainsi que le groupe de sécurité.
Toute aide ou une orientation à me pointer en est grandement appréciée, ou même une autre façon d'obtenir une liste de fichiers dans un répertoire et sous répertoires.
[Édité]
Pourquoi est-ce une question en attente?
OriginalL'auteur waoonetwork | 2014-11-05
Vous devez vous connecter pour publier un commentaire.
Les deux choses à regarder dehors pour sont:
Assurez-vous que le compte de connexion pour le service SQL Server (le service généralement répertorié comme "SQL Server (MSSQLSERVER)" dans la liste des Services) n'a de droits que sur le partage réseau.
Cela ressemble à ce qui a été fait, de sorte qu'il devrait être testé en ouvrant une session sur windows directement sous ce compte et de tenter d'aller au chemin d'accès réseau.
Assurez-vous que la Connexion dans SQL Server qui est en cours d'exécution
xp_dirtree
a "sysadmin" droits de l':Cela peut être fait directement par l'ajout du compte à la
sysadmin
rôle de serveur, ouSigner une procédure stockée qui exécute
xp_dirtree
:sysadmin
rôle de serveurxp_dirtree
xp_dirtree
, à l'aide de AJOUT DE LA SIGNATURE et le certificat qui venait juste d'être restauréJuste de l'avoir dit, une autre option est de faire disparaître
xp_dirtree
tout à fait et plutôt d'utiliser SQLCLR. Il est probablement l'exemple de code C# sur différents blogs. Il y a aussi quelques CodePlex des projets qui ont des fonctions de système de fichiers et permettrait aussi de fournir un pré-assembly compilé pour ceux qui ne veulent pas faire face à la compilation. Et, il y a aussi le SQL# bibliothèque qui dispose de plusieurs fonctions de fichiers, y comprisFile_GetDirectoryListing
qui est une fonction TABLE (ce qui signifie: vous pouvez l'utiliser dans une instruction SELECT avec une condition plutôt que d'avoir besoin de vider toutes les colonnes et toutes les lignes dans une table temporaire en premier). Il est aussi entièrement intégrée qui signifie qu'il est très rapide, même pour les 100k ou plusieurs fichiers. Veuillez noter que leFILE_*
fonctions sont uniquement dans la version Complète (pas gratuit) et je suis le créateur de SQL#, mais il n'a gérer cette situation tout à fait bien.Votre SQL# bibliothèque de l'air prometteur. Magnifique travail!!!
Content que cela vous a aidé à le comprendre. Et merci de poster le commentaire laissez-moi (et d'autres en cours d'exécution dans la même émission) de savoir ce que la cause exacte était :).
Ouais, c'est toujours utile lorsque l'affiche est de retour pour poster la solution. J'ai couru dans de nombreux postes, tout en essayant de trouver une solution où l'affiche n'a pas rapport à la manière dont il a été fixé. Type de lecteurs d'une personne noix. haha
OriginalL'auteur Solomon Rutzky