No. As Harry has pointed out, 10, 100 and 1000 Mbit/s are different Ethernet protocols (on twisted pair that is 10BASE-T, 100BASE-TX, 1000BASE-T). Depending on the hardware you can force a certain protocol or limit TP's autonegotiation to specific speeds but there are no arbitrary speeds in between).
Watch out when disabling autonegotiation and forcing a speed you'll also deactivate half-duplex/full-duplex negotiation, causing a node to fall back to half duplex when it's still trying to autonegotiate. You need to either use something like Auto-10/100
to limit the negotiated speed on the switch or configure both sides (switch and host) to e.g. 100BASE-TX/FDX
. Your exact options depend on your hardware.
Apart from the link speed you can configure some switches to limit the effective traffic inbound or outbound on a port to a certain throughput - excess traffic is simply dropped. While this simulates a slower link it isn't the exact same. A node linked with 100BASE-TX may send 100 Mbit/s worth of traffic through the link, but when the switch limits ingress to 20 Mbit/s, 80% of the frames will be dropped.
There are some transport layer protocols that can handle this situation automatically and adjust the flow (e.g. TCP) and some that can't (e.g. UDP). When there's no acknowledgement on the application layer either, traffic will just vanish.
Your server - or rather uplink - overloading problem is best countered by implementing QoS on the router. You should define the traffic class (server source IP, server source TCP port) and limit the maximum bandwidth that is transported. Alternatively, you can just give it low priority, so that it is simply dropped when (or slightly before) congestion starts.
If you limit the server's uplink port bandwidth on the switch you'd have the limited speed in your network as well.