Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Dateiexistenz in SQL Server für jede Zeile in einer Tabelle überprüfen?

Wie kann ich die Dateiexistenz in SQL Server für jede Zeile in einer Tabelle überprüfen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-06 02:33:40367Durchsuche

How Can I Verify File Existence in SQL Server for Each Row in a Table?

Ü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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn