2017-10-27 1 views
0

私は、特定のファイルがsqlを使用しているフォルダに存在するかどうかを見つける方法を探しています。SQLを使用して、特定の名前のファイルが存在するかどうかを確認する方法は?

私は、次のファイルがあります:ファイルA001が存在するかどうかを見つけるために ABC.DEF.T123.A001.txt ABC.DEF.T456.A002.txt ABC.DEF.T789.A003.txt

が、私はロジックの下に使用していますが

declare @fullPath varchar(200) = '\\mypath\filepath\' 
declare @fileName varchar(200) = 'ABC.DEF.*.A001.txt' 

EXEC master.dbo.xp_fileexist @fullPath, @exist OUTPUT 
SET @exist = CAST(@exist AS BIT) 

select @exist 

@existの値を表示する場合、私は常に取得0の場合でも、A002シーケンスを含むファイルが存在します。

私は正しい方法でフィルタを使用していないと思います。

私は間違っていますか?

答えて

0

宣言@File_Exists INT

EXEC xp_fileexist '\ mypathで\ファイルパス\ ABC.DEF。*。A001.txt'、ファイルが存在するかどうかを@File_Exists 選択@File_Exists

は1を返します。終了しない場合は0を返します。このコードをSQLサーバーで使用するには、ユーザーが正しいアクセス権を持っていて、サーバー上の管理者である必要があります。これは最も安全な解決策ではありません。これ以上多くのサービスを利用することができます。

+0

しかし、それは私が持っているもので、ファイルA002が存在しても0になります。 – Yev

+0

SQLサーバーに対して正しいアクセス許可がないため、コードが正しく実行されない可能性があります。 – Perniferous

+0

パーミッションは問題ありません。それは、ワイルドカードを使用する必要がないときに動作します – Yev

0
権限がディレクトリへのアクセスをブロックすることができ

....

は、Windowsエクスプローラを使用する場合、それはSQL Serverがサービスを実行している資格情報を使用しますが、ディレクトリ/ファイルにアクセスするための資格情報を使用しています...ファイル共有にアクセスするかどうか。

ドメインアカウントを使用してそのファイルパスにアクセスできる場合は、デフォルトの「ネットワークサービス」アカウントではなくそのファイル共有のアクセス許可を持つドメインアカウントを使用してSql Serverを実行する必要があります。

関連する問題