Allan Bowe
Allan Bowe

Reputation: 12691

Finding PID responsible for "ERROR: A lock is not available for"

On UNIX systems, if a file lock is held, the error message includes a PID, eg:

ERROR: A lock is not available for XXX.XXXX.

ERROR: Lock held by process 4653302.

For windows, the guilty process is not provided. Is there a way I can find out who locked the table? I cannot log onto the machine, however the server does have XCMD enabled.

FWIW, the FILELOCKWAIT option is not helpful here (it's a long running lock).

EDIT: I am not an administrator, and I cannot download third party tools

Upvotes: 0

Views: 2067

Answers (1)

Richard
Richard

Reputation: 27508

wmic provides almost anything you want about the goings on in Windows.

win32_process will tell you (if your account has the proper policy settings) all about who is running what. Find the SASers and call em up ?

Example: Proc IMPORT can't read a pipe, so save the wmic output to a file first.

%let wmic_cmd = wmic path win32_process where "description like '%nrstr(%%sas.exe%%)'";

filename whosas pipe 
   "%superq(wmic_cmd) get /format:csv | findstr /r /v ""^$"" > c:\temp\wmic_whosas.txt"
;

data _null_;
  infile whosas;
  input;
run;

proc import dbms=csv datafile="c:\temp\wmic_whosas.txt" replace out=whosas;
run;

Should get you 47 pieces of info about each SAS process.

If you don't have permissions, IT will have to grant them, or get involved with you so often they eventually do :)

Upvotes: 1

Related Questions