Cannot find the object because it does not exist
This issue here is that it doesn't so much matter what the User in DB_B is because Database-level permissions, by default, do not transfer between Databases. There are ways of getting this to work that require little effort, but that are also huge security risks: enabling Cross-Database Ownership Chaining and/or enabling the TRUSTWORTHY Database property. But you don't need either of those. Instead, what you can do is:


Create a Certificate in DB_A
Sign the Stored Procedure in DB_A with that Certificate
Extract the Certificate bytes and Private Key bytes using the built-in functions: CERTENCODED and CERTPRIVATEKEY
Create that same Certificate in DB_B using the extracted Certificate and Private Key bytes
Create a User in DB_B from that Certificate
Add the Certificate-based User in DB_B to the db_owner Database Role.


Please see the following answer of mine on a related question that shows this working between two databases:

Giving Special Permissions to a Stored Procedure in SQL Server