Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Dateiexistenz in SQL Server für jede Zeile in einer Tabelle überprüfen?
Überprüfen der Dateiexistenz in SQL Server
Problemstellung
Gegeben ist eine Tabelle mit Dateipfaden In einer Spalte gespeichert, besteht die Aufgabe darin, festzustellen, ob jede Datei physisch im Dateisystem vorhanden ist. Ziel ist es, eine temporäre Spalte hinzuzufügen, die „Ja“ für vorhandene Dateien und „Nein“ für nicht vorhandene Dateien anzeigt.
Lösung
Um dies zu erreichen, haben wir kann die erweiterte gespeicherte Prozedur master.dbo.xp_fileexist verwenden, die das Vorhandensein einer angegebenen Datei prüft. Um diese Technik jedoch auf eine Tabelle anzuwenden, ist eine benutzerdefinierte Funktion erforderlich.
Benutzerdefinierte Funktion
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
Hinzufügen einer berechneten Spalte
Bearbeiten Sie die Tabelle, um eine berechnete Spalte namens IsExists mit hinzuzufügen Ausdruck:
dbo.fn_FileExists(filepath)
Verwendung
Jetzt können Sie einfach die Datensätze mit vorhandenen Dateien auswählen:
SELECT * FROM dbo.MyTable where IsExists = 1
Alternative Verwendung (Außerhalb der berechneten Spalte)
Um die Funktion außerhalb einer berechneten Spalte zu verwenden Spalte:
select id, filename, dbo.fn_FileExists(filename) as IsExists from dbo.MyTable
Fehlerbehebung
Wenn die Funktion für bekannte Dateien 0 zurückgibt, überprüfen Sie die Ordnerberechtigungen und stellen Sie sicher, dass das SQL Server-Konto schreibgeschützten Zugriff hat. Fügen Sie außerdem das Konto „Netzwerkdienst“ zu den Sicherheitseinstellungen des Ordners hinzu, um Zugriff zu gewähren.
Das obige ist der detaillierte Inhalt vonWie kann ich die Dateiexistenz in SQL Server für jede Zeile in einer Tabelle überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!