Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 检测文本文件是否在MS SQL Server中打开_Sql Server_Text Files - Fatal编程技术网

Sql server 检测文本文件是否在MS SQL Server中打开

Sql server 检测文本文件是否在MS SQL Server中打开,sql-server,text-files,Sql Server,Text Files,是否有一种方法可以使用MS SQL server检测文本文件是否打开。我想检查文件是否打开,如果打开,然后发送邮件警报。我有一个基本脚本。 根据您的要求进行修改 DECLARE @FILENAME VARCHAR(200)='TEST.TXT' ---- THE FILE WHICH YOU WANT TO CHECK DECLARE @QUERY VARCHAR(500) CREATE TABLE #tasklist ( output VARCHAR(max) ) D

是否有一种方法可以使用MS SQL server检测文本文件是否打开。我想检查文件是否打开,如果打开,然后发送邮件警报。

我有一个基本脚本。 根据您的要求进行修改

DECLARE @FILENAME VARCHAR(200)='TEST.TXT' ---- THE FILE WHICH YOU WANT TO CHECK 
DECLARE @QUERY VARCHAR(500) 

CREATE TABLE #tasklist  (      output VARCHAR(max)   ) 

DECLARE @TASKS TABLE   (      output VARCHAR(max)   ) 

INSERT INTO #tasklist 
EXEC ('EXEC XP_CMDSHELL ''WMIC PROCESS GET COMMANDLINE''') 

SET @QUERY = 'SELECT * FROM #TASKLIST WHERE OUTPUT LIKE ''%' 
             + @FILENAME + '%''' 

INSERT INTO @TASKS 
EXEC (@QUERY) 

IF EXISTS(SELECT Count(1) 
          FROM   @TASKS) 
  BEGIN 
      SELECT 'THE FILE IS OPEN AS FOLLOWS', 
             * 
      FROM   @TASKS 
  END 
ELSE 
  BEGIN 
      SELECT 'NO SUCH FILE OPEN' 
  END 

DROP TABLE #tasklist 

“打开”是什么意思?确切地说,不是用SQL,但你可以用C来完成。我试着运行上面的代码,根据需要修改它,但它似乎不起作用。代码没有出错,我没有在我要查找的文件的任务列表表中看到输出,我可以看到有空行的表。我观察到的奇怪的事情是,如果在命令提示符下运行相同的命令,它会详细说明文件名,但如果在SQL中运行,它不会详细说明文件名。可能是您应该在该特定文件夹中授予fill访问权限。MSSQL帐户似乎没有访问权限。尝试给予完全访问权限。