Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Verifique se o arquivo existe ou não no sql server?


Crie uma função assim:
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

Edite sua tabela e adicione uma coluna computada (IsExists BIT). Defina a expressão para:
dbo.fn_FileExists(filepath)

Depois é só selecionar:
SELECT * FROM dbo.MyTable where IsExists = 1

Atualizar :

Para usar a função fora de uma coluna computada:
select id, filename, dbo.fn_FileExists(filename) as IsExists
from dbo.MyTable

Atualizar :

Se a função retornar 0 para um arquivo conhecido, provavelmente há um problema de permissões. Certifique-se de que a conta do SQL Server tenha permissões suficientes para acessar a pasta e os arquivos. Somente leitura deve ser suficiente.

E SIM, por padrão, a conta 'SERVIÇO DE REDE' não terá direito suficiente na maioria das pastas. Clique com o botão direito do mouse na pasta em questão e selecione 'Propriedades', depois clique na guia 'Segurança'. Clique em 'Editar' e adicione 'Serviço de Rede'. Clique em 'Aplicar' e teste novamente.