Hello all,
I'm uncertain what the below error message means when I run a proc contents against the following libname. Appreciate any insight. Thanks.
libname SetRef sasspds 'SetRef' server=xxx user=xxx password=xxx;
NOTE: Remote submit to EMSVR commencing. 560 PROC CONTENTS DATA=
SetRef
._all_ MEMTYPE=data
561 OUT = Table1 NOPRINT;
562 RUN;
ERROR: Data set DPF component missing one or more partition file(s).
ERROR: Data set DPF component missing one or more partition file(s).
ERROR: The value SS# is not a valid SAS name.
NOTE: Statements not processed because of errors noted above.
NOTE: The data set WORK.Table1 has 685 observations and 41 variables.
NOTE: PROCEDURE CONTENTS used (Total process time):
real time 7.45 seconds
cpu time 0.03 seconds
NOTE: The SAS System stopped processing this step because of errors. NOTE: Remote submit to EMSVR complete.
One (or more) partition file in one of the SPDS datasets has disappeared.
SPDS can store its data in many different files. All of them must be here for the data set to be used.
Thanks for the note about multiple partitions. We are recovering from disk file issue and have a few of these errors appearing. I know what the problem is but how do I fix the problem? Will spdsclean re-index, the manual is not clear.
Is there an easy way in a domain to find out what tables are missing. If I run contents data=_all_ it appears to be a small number comparted to all of our tables but it doesn't tell me which ones.
Thanks for any suggestions.
The partition files are named sequentially, just look at the missing numbers.
The right thing to do though is to restore all files as you need to have a set of files from the same snapshot.
If you mix file #1 from the January version with file #2 from the February version, you'll end up with a real mess.
Thank you for the quick response. I should have been clearer - I realize the partitions are sequential. The problem in the domain in question is an easy way to identify the tables. We have over a thousand tables and looking at the errors returned from proc contents data=_all_ there are a small number (two or three) that are missing a partition. The problem is proc contents doesn't return the file that has the missing partition, it just writes an error note, so I am left with searching manually. I can search manually or write a little piece of code to cycle through the tables but I was hoping there was a faster way to identify the tables. This would allow me to go back to our appropriate backup and pull out the pieces, or just delete and rebuild those few tables. CB.
Like this?
data BADTABLES;
set SASHELP.VTABLE;
where LIBNAME='XXX';
DSID=open(MEMNAME);
if DSID then RC=close(DSID);
else output;
run;
Thanks again - tried with vtables - unfortunately the offending files were not read into vtables.
I tried with proc datasets contents nolist out=work.datalist ; Errors were displayed but not the table names, tables were not in the out data.
What I did in the end was run a proc datasets copy with obs=0 - this identified in the log file the particular data tables with missing partitions in the log file. Once we found the table names correcting the problem from backup was quick and easy.
I made a slight change to your vtables code by cats the library name and member name.
options obs=0 ;
proc dataset library=projects noprint memtype=data ;
copy out=work ;
quit ;
options obs=max ;
Glad it worked in the end, not too sure why VTABLE couldn't see all tables.
SPDE really needs to improve on the usefulness if its error messages.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.