Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengesahkan Kewujudan Fail dalam SQL Server untuk Setiap Baris dalam Jadual?

Bagaimanakah Saya Boleh Mengesahkan Kewujudan Fail dalam SQL Server untuk Setiap Baris dalam Jadual?

Linda Hamilton
Linda Hamiltonasal
2025-01-06 02:33:40367semak imbas

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

Mengesahkan Kewujudan Fail dalam SQL Server

Pernyataan Masalah

Diberikan jadual dengan laluan fail disimpan dalam lajur, tugasnya adalah untuk menentukan sama ada setiap fail wujud secara fizikal dalam sistem fail. Matlamatnya adalah untuk menambah lajur sementara untuk menunjukkan "Ya" untuk fail sedia ada dan "Tidak" untuk fail yang tidak wujud.

Penyelesaian

Untuk mencapai matlamat ini, kami boleh menggunakan prosedur tersimpan lanjutan master.dbo.xp_fileexist, yang menyemak kewujudan fail tertentu. Walau bagaimanapun, untuk menggunakan teknik ini pada jadual, fungsi tersuai diperlukan.

Fungsi Tersuai

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

Menambah Lajur Terkira

Edit jadual untuk menambah lajur yang dikira dipanggil IsExists dengan ungkapan:

dbo.fn_FileExists(filepath)

Penggunaan

Kini, anda hanya boleh memilih rekod dengan fail sedia ada:

SELECT * FROM dbo.MyTable where IsExists = 1

Penggunaan Alternatif (Di Luar Lajur Pengiraan)

Untuk menggunakan fungsi di luar pengiraan lajur:

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

Menyelesaikan masalah

Jika fungsi mengembalikan 0 untuk fail yang diketahui, semak kebenaran folder dan pastikan akaun SQL Server mempunyai akses baca sahaja. Selain itu, tambahkan akaun "Perkhidmatan Rangkaian" pada tetapan keselamatan folder untuk memberikan akses.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Kewujudan Fail dalam SQL Server untuk Setiap Baris dalam Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn