Utwórz taką funkcję:
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
Edytuj tabelę i dodaj kolumnę obliczeniową (IsExists BIT). Ustaw wyrażenie na:
dbo.fn_FileExists(filepath)
Następnie wybierz:
SELECT * FROM dbo.MyTable where IsExists = 1
Aktualizacja :
Aby użyć funkcji poza kolumną wyliczaną:
select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable
Aktualizacja :
Jeśli funkcja zwraca 0 dla znanego pliku, prawdopodobnie występuje problem z uprawnieniami. Upewnij się, że konto SQL Server ma wystarczające uprawnienia dostępu do folderu i plików. Tylko do odczytu powinno wystarczyć.
I TAK, domyślnie konto „USŁUGA SIECIOWA” nie będzie mieć wystarczających praw do większości folderów. Kliknij prawym przyciskiem myszy odpowiedni folder i wybierz „Właściwości”, a następnie kliknij kartę „Zabezpieczenia”. Kliknij „Edytuj” i dodaj „Usługa sieciowa”. Kliknij „Zastosuj” i przetestuj ponownie.