sql >> Base de Datos >  >> RDS >> Sqlserver

¿Verificar que el archivo exista o no en el servidor sql?

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.