If you want to use Carriage returns in SQL statements then use vbCR instead of vbCrLf (i.e. just a carriage return, and no line feed on the end). It's a good idea to use them if you are outputting your query some where for a person to read (even just the debug window) so that it formats the queries nice to read.
Your code would look much better type as so
sql = "SELECT distinct VR.VIDEO_ID" & vbcr & _
"FROM mpeg..VIDEOS_REQUIRED VR" & vbcr & _
"JOIN mpeg..VIDEOS_REQUIRED_TEXT VT ON VR.STATUS = VT.STATUS" & vbcr & _
"LEFT JOIN mpeg..VIDEO VD ON VD.VIDEO_ID = VR.VIDEO_ID" & vbcr & _
"LEFT JOIN mpeg..VIDEOS_ARCHIVED VA ON VA.VIDEO_ID = VR.VIDEO_ID" & vbcr & _
"LEFT JOIN mpeg..VIDEOS_ARCHIVED_TEXT VAT ON VA.STATUS = VAT.STATUS" & vbcr & _
"where VD.VIDEO_ID = null and VAT.VALUE <> null"
This makes it much easier to read the query within the code. Please note the "_" at the end of every line which tells VB that the line does not finish at the end of the current line, but continues to the next, until there isn't a "_"
To try and fix your problem, what database are you connecting to? I guess it isn't Access!
Oh, yeah, I see, it's an SQL Server. OK, first guess, is it the double dots (i.e. mpeg..VIDEOS_...). Will it work with one dot (i.e. mpeg.VIDEOS_...)