Maak een functie als volgt:
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
Bewerk uw tabel en voeg een berekende kolom toe (IsExists BIT). Stel de uitdrukking in op:
dbo.fn_FileExists(filepath)
Selecteer dan gewoon:
SELECT * FROM dbo.MyTable where IsExists = 1
Bijwerken :
Om de functie buiten een berekende kolom te gebruiken:
select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable
Bijwerken :
Als de functie 0 retourneert voor een bekend bestand, is er waarschijnlijk een probleem met de machtigingen. Zorg ervoor dat het account van de SQL Server voldoende machtigingen heeft om toegang te krijgen tot de map en bestanden. Alleen-lezen zou voldoende moeten zijn.
En JA, standaard heeft het 'NETWERKSERVICE'-account niet voldoende recht op de meeste mappen. Klik met de rechtermuisknop op de betreffende map en selecteer 'Eigenschappen' en klik vervolgens op het tabblad 'Beveiliging'. Klik op 'Bewerken' en voeg 'Netwerkservice' toe. Klik op 'Toepassen' en test opnieuw.