Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Überprüfen Sie, ob die Datei im SQL-Server vorhanden ist oder nicht?

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.