If your sublevels are set to blueprint level streaming instead of Always Loaded, that would explain why your lights are not visible in your render. When movie render queue starts rendering, it essentially ‘plays’ your ‘game’ that you have created (your project and its level hierarchy).
When a sublevel is set to blueprint level streaming, you need something to tell your ‘game’ to load a level at render time. Having it set to Always loaded will bypass this. You can set a sublevel to be always loaded by right clicking it in the levels menu, going to Change Streaming Method, and selecting it.
To tell your ‘game’ to load the level at render time programmatically, you need to creation a custom event in your main level blueprint (the level that is the parent of your sublevels). This custom event would trigger setting the load status of your sublevel(s). You would then call that custom event in the movie render queue in the console commands section using the format “ce my_custom_event” where my_custom_event is what you named your custom event node in the level blueprint.
Here is an example of how to build the custom event in the level blueprint:
And here is how you would call it in the MRQ: