Maison >base de données >tutoriel mysql >Comment puis-je vérifier l'existence d'un fichier dans SQL Server pour chaque ligne d'une table ?
Vérification de l'existence des fichiers dans SQL Server
Énoncé du problème
Étant donné une table avec les chemins de fichiers stocké dans une colonne, la tâche consiste à déterminer si chaque fichier existe physiquement dans le système de fichiers. Le but est d'ajouter une colonne temporaire pour indiquer "Oui" pour les fichiers existants et "Non" pour les fichiers inexistants.
Solution
Pour y parvenir, nous peut utiliser la procédure stockée étendue master.dbo.xp_fileexist, qui vérifie l'existence d'un fichier spécifié. Cependant, pour appliquer cette technique à une table, une fonction personnalisée est requise.
Fonction personnalisée
CREATE FUNCTION dbo.fn_FileExists(@path varchar(512)) RETURNS BIT AS BEGIN DECLARE @result INT EXEC master.dbo.xp_fileexist @path, @result OUTPUT RETURN cast(@result as bit) END; GO
Ajout d'une colonne calculée
Modifiez le tableau pour ajouter une colonne calculée appelée IsExists avec le expression :
dbo.fn_FileExists(filepath)
Utilisation
Maintenant, vous pouvez simplement sélectionner les enregistrements avec des fichiers existants :
SELECT * FROM dbo.MyTable where IsExists = 1
Utilisation alternative (Hors colonne calculée)
Pour utiliser la fonction en dehors d'une colonne calculée column :
select id, filename, dbo.fn_FileExists(filename) as IsExists from dbo.MyTable
Dépannage
Si la fonction renvoie 0 pour les fichiers connus, vérifiez les autorisations du dossier et assurez-vous que le compte SQL Server dispose d'un accès en lecture seule. De plus, ajoutez le compte « Service réseau » aux paramètres de sécurité du dossier pour accorder l'accès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!