sql >> Database >  >> RDS >> Sqlserver

Controleer of het bestand al dan niet aanwezig is op de sql-server?

Maak een functie als volgt:

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

Bewerk uw tabel en voeg een berekende kolom toe (IsExists BIT). Stel de uitdrukking in op:

dbo.fn_FileExists(filepath)

Selecteer dan gewoon:

SELECT * FROM dbo.MyTable where IsExists = 1

Bijwerken :

Om de functie buiten een berekende kolom te gebruiken:

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

Bijwerken :

Als de functie 0 retourneert voor een bekend bestand, is er waarschijnlijk een probleem met de machtigingen. Zorg ervoor dat het account van de SQL Server voldoende machtigingen heeft om toegang te krijgen tot de map en bestanden. Alleen-lezen zou voldoende moeten zijn.

En JA, standaard heeft het 'NETWERKSERVICE'-account niet voldoende recht op de meeste mappen. Klik met de rechtermuisknop op de betreffende map en selecteer 'Eigenschappen' en klik vervolgens op het tabblad 'Beveiliging'. Klik op 'Bewerken' en voeg 'Netwerkservice' toe. Klik op 'Toepassen' en test opnieuw.



  1. MySQL relationele databases gebruiken op Gentoo

  2. hoe de laatste invoeg-ID te krijgen na invoegquery in codeigniter actieve record

  3. Bestanden opslaan in SQL Database met behulp van FILESTREAM - Deel 1

  4. Entity Framework en meerdere schema's