Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Verifica che il file esista o meno nel server sql?

Crea una funzione in questo modo:

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

Modifica la tabella e aggiungi una colonna calcolata (IsExists BIT). Imposta l'espressione su:

dbo.fn_FileExists(filepath)

Quindi seleziona:

SELECT * FROM dbo.MyTable where IsExists = 1

Aggiorna :

Per utilizzare la funzione al di fuori di una colonna calcolata:

select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable

Aggiorna :

Se la funzione restituisce 0 per un file noto, è probabile che si sia verificato un problema di autorizzazioni. Assicurarsi che l'account di SQL Server disponga di autorizzazioni sufficienti per accedere alla cartella e ai file. La sola lettura dovrebbe essere sufficiente.

E SÌ, per impostazione predefinita, l'account "SERVIZIO DI RETE" non avrà diritto sufficiente nella maggior parte delle cartelle. Fare clic con il pulsante destro del mouse sulla cartella in questione e selezionare "Proprietà", quindi fare clic sulla scheda "Sicurezza". Fare clic su "Modifica" e aggiungere "Servizio di rete". Fai clic su "Applica" e riprova.