The word 'sick' can have various meanings, depending on the variety of English which you are using. It's important not to confuse these two meanings:
My dog is sick, so I'm going to take him to the vet's = 'He is unwell' ---> stative verb
This is how a AmE speaker of English would use the adjective 'sick'.
My dog is sick every time he goes in the car = 'He vomits' ---> dynamic verb
This is a British English usage of the verb phrase 'be sick'.
Your sentence ("The dog has been sick on the bed" = The bed needs cleaning) is an example of the exclusively British English usage. In British English, the collocation 'be+sick' means to vomit. Note that this is a dynamic verb which refers to an ACTION, as opposed to a stative verb which refers to a state.
In your example, the speaker is saying that the dog has just vomited on the bed. They are using a present perfect because it is a recent occurrence with a very clear (and unpleasant!) impact on the present situation. They are NOT describing the general state of the dog being unwell - they are telling the listener about a specific event that has just happened.
I hope that makes sense.