This can be a dangerous path you are following....
What if you want to change something in the student script or the DB architectuur .. Or there is a patch needed for a db. It means you have to go to each school and do an upgrade manually. I would rather expand my servers so you have one single place where your code and Database resides. And let's say 100 schools with 1000 students will give you a table of 100.000 , which is fine in databases. The only thing you should test on , is the amount of requests a minute you will receive. Will all those 100.000 students do the test at the same time ? Then an optimized code and a couple of server nodes should do the trick.... Especially if you host it for example in a cloud that automatically expand the server requirements.
But let's say you still want to continue with your plan. I would create an API on hosting A with the questions I would ask once all the questions and cache it. But there still will be 100.000 requests of each student for the questions...