First thing to point out is this could be inherently dangerous.
You would want to have timestamps on each table for performance, otherwise you are going to run into potential record collision problems. Without timestamps you REALLY want to be certain you have no identity_inserts on and that the database backup has not been written to independently of the current system.
But if you have timestamps, or a guaranteed way if identifying records to avoid collision etc, and you REALLY want to roll your own rather than use one of the data comparison tools available then...
You could write a stored procedure with a dynamic query and iterate over each table with INFORMATION_SCHEMA.TABLES and perform an insert statement created.
EXEC sp_execute '' is the structure for dynamic queries. Create a variable for the query, use a cursor to iterate over the INFORMATION_SCHEMA_TABLES and INFORMATION_SCHEMA_TABLES to construct SQL statements.
Hopefully that is enough information to help you construct a dynamic SQL query that would effectively do something like the following on each table:
INSERT INTO TableA(Col1, Col2, ColN)
SELECT
Col1, Col2, ColN
FROM
OldDatabase.TableA
WHERE
TableA.[ID or Timestamp] NOT IN OldDatabase.[ID or TIMESTAMP]
But you really want to examine WHY you are missing those records. Perhaps also insert them into a logging table to ensure you can go back afterwards and examine why.
Hope this helps.