Създайте функция по следния начин:
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
Редактирайте вашата таблица и добавете изчислена колона (IsExists BIT). Задайте израза на:
dbo.fn_FileExists(filepath)
След това просто изберете:
SELECT * FROM dbo.MyTable where IsExists = 1
Актуализиране :
За да използвате функцията извън изчислена колона:
select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable
Актуализиране :
Ако функцията върне 0 за известен файл, тогава вероятно има проблем с разрешенията. Уверете се, че акаунтът на SQL Server има достатъчно разрешения за достъп до папката и файловете. Само за четене трябва да е достатъчно.
И ДА, по подразбиране акаунтът „МРЕЖОВА УСЛУГА“ няма да има достатъчно права в повечето папки. Щракнете с десния бутон върху въпросната папка и изберете „Свойства“, след което щракнете върху раздела „Сигурност“. Щракнете върху „Редактиране“ и добавете „Мрежова услуга“. Щракнете върху „Прилагане“ и тествайте отново.