Creating a Primary Key on Existing table
Yes what you want to do is possible. It is impossible, from what you've given, to know how long it will take or how many additional resources will be required in terms of disk space.  Testing will get you those answers.

Some things to take into consideration...


You are going to need additional space for your new constraint/index.  Ensure the TransactionID is as small and unique as possible to maximize on space usage
Is your TransactionID ever growing or can it be changed for a given record?  You want the former to minimize fragmentation leading to wasted disk and performance issues
Assuming you have other indexes, you will want to script those indexes out and drop them prior to creating the PK/clustering key.  Reapply the indexes once completed; this will add additional time against your maintenance window.
You will essentially be ordering your data since you are also making your Primary Key your clustered index as well; you will need to ensure there is plenty of additional disk space to accommodate the sorting operations