sql >> Databasteknik >  >> RDS >> Sqlserver

Kontrollera om filen finns eller inte i sql-servern?

Skapa en funktion så här:

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

Redigera din tabell och lägg till en beräknad kolumn (IsExists BIT). Ställ in uttrycket på:

dbo.fn_FileExists(filepath)

Välj sedan bara:

SELECT * FROM dbo.MyTable where IsExists = 1

Uppdatera :

För att använda funktionen utanför en beräknad kolumn:

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

Uppdatera :

Om funktionen returnerar 0 för en känd fil finns det troligtvis ett behörighetsproblem. Se till att SQL Server-kontot har tillräckliga behörigheter för att komma åt mappen och filerna. Skrivskyddad bör vara tillräckligt.

Och JA, som standard kommer kontot 'NÄTVERKSTJÄNST' inte att ha tillräcklig rätt till de flesta mappar. Högerklicka på mappen i fråga och välj "Egenskaper", klicka sedan på fliken "Säkerhet". Klicka på "Redigera" och lägg till "Nätverkstjänst". Klicka på "Apply" och testa igen.



  1. Antal rader lästa / faktiska rader Läs varningar i Plan Explorer

  2. Hur man får slumpmässiga rader från SQL Server Table - SQL Server / TSQL Tutorial Del 117

  3. ResultSet#getDate() semantik

  4. Hur man krypterar en användardefinierad funktion i SQL Server