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 ?

Comment puis-je vérifier l'existence d'un fichier dans SQL Server pour chaque ligne d'une table ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-06 02:33:40367parcourir

How Can I Verify File Existence in SQL Server for Each Row in a 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn