Permissions not allowing Update or Select on a trigger executed function
The permissions error is to be expected when you don't have things like Cross-Database Ownership Chaining and TRUSTWORTHY enabled, and aren't logging in as sa ;-).

This very similar to the problem described (and resolved) in my answer to another question here on DBA.SE:

Permissions in triggers when using cross database certificates

However, in that case there was a Trigger in Database B and that is not the situation here. Still, this should be fairly easy to solve and will use a setup similar to what is described in that other answer.

Here are the steps you need to do for your particular issue (all of which are shown in that other answer):


Create a Certificate in Database A.
Sign the A.dbo.CallProcInB Stored Procedure using that Certificate.
Backup the Certificate, either to a File or into a temporary table (as shown in that linked answer).

Create that same Certificate in Database B (which is done by getting it from the backup file or out of the temp table, as shown in that linked answer).
Create a User from that Certificate.
Grant EXECUTE on the B.dbo.RunComponentsUpdate Stored Procedure to the new Certificate-based User.


That should be all you need.

Please be aware that any changes to the A.dbo.CallProcInB Stored Procedure will cause it to lose the signature. In those cases, just execute ADD SIGNATURE again.