Cree una función como esta:
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
Edite su tabla y agregue una columna calculada (IsExists BIT). Establezca la expresión en:
dbo.fn_FileExists(filepath)
Luego simplemente selecciona:
SELECT * FROM dbo.MyTable where IsExists = 1
Actualizar :
Para usar la función fuera de una columna calculada:
select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable
Actualizar :
Si la función devuelve 0 para un archivo conocido, es probable que haya un problema de permisos. Asegúrese de que la cuenta de SQL Server tenga permisos suficientes para acceder a la carpeta y los archivos. Solo lectura debería ser suficiente.
Y SÍ, de forma predeterminada, la cuenta 'SERVICIO DE RED' no tendrá suficientes derechos en la mayoría de las carpetas. Haga clic derecho en la carpeta en cuestión y seleccione 'Propiedades', luego haga clic en la pestaña 'Seguridad'. Haga clic en 'Editar' y agregue 'Servicio de red'. Haga clic en 'Aplicar' y vuelva a probar.