Erstellen Sie eine Funktion wie folgt:
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
Bearbeiten Sie Ihre Tabelle und fügen Sie eine berechnete Spalte hinzu (IsExists BIT). Setzen Sie den Ausdruck auf:
dbo.fn_FileExists(filepath)
Wählen Sie dann einfach:
SELECT * FROM dbo.MyTable where IsExists = 1
Aktualisieren :
So verwenden Sie die Funktion außerhalb einer berechneten Spalte:
select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable
Aktualisieren :
Wenn die Funktion 0 für eine bekannte Datei zurückgibt, liegt wahrscheinlich ein Berechtigungsproblem vor. Stellen Sie sicher, dass das Konto des SQL Servers über ausreichende Berechtigungen verfügt, um auf den Ordner und die Dateien zuzugreifen. Schreibgeschützt sollte ausreichen.
Und JA, standardmäßig hat das Konto „NETWORK SERVICE“ keine ausreichenden Rechte für die meisten Ordner. Klicken Sie mit der rechten Maustaste auf den betreffenden Ordner, wählen Sie „Eigenschaften“ und klicken Sie dann auf die Registerkarte „Sicherheit“. Klicken Sie auf „Bearbeiten“ und fügen Sie „Netzwerkdienst“ hinzu. Klicken Sie auf „Übernehmen“ und testen Sie erneut.