次のような関数を作成します:
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
テーブルを編集し、計算列(IsExists BIT)を追加します。式を次のように設定します:
dbo.fn_FileExists(filepath)
次に、次を選択します:
SELECT * FROM dbo.MyTable where IsExists = 1
更新 :
計算列の外で関数を使用するには:
select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable
更新 :
関数が既知のファイルに対して0を返す場合は、アクセス許可の問題が発生している可能性があります。 SQL Serverのアカウントに、フォルダーとファイルにアクセスするための十分なアクセス許可があることを確認してください。読み取り専用で十分です。
そして、はい、デフォルトでは、「ネットワークサービス」アカウントはほとんどのフォルダに十分な権利を持っていません。問題のフォルダを右クリックして[プロパティ]を選択し、[セキュリティ]タブをクリックします。 [編集]をクリックして、[ネットワークサービス]を追加します。 [適用]をクリックして再テストします。