An IN operator should not fail unless none of the values in the list are found. You should be able to protect this issue with a Try() function
Eval (Parse (Evalinsert("\[
db= Try( Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)") )
]\")));
Also, it is my experience that your IN operator should enclose the character elements within the call with quotes.
WHERE name IN ('John','Jane','Anna','Dominic')
Changing your JSL to the below will change the IN operator call to the above form
NameList = {"John","Jane","Anna","Dominic"};
NameItems = "'" || ConcatItems(NameList ,"','") || "'";
Jim