I support some databases which are occasionally upgraded by the vendor through a series of obfuscated stored procedures. The datatype changes and such are sometimes undocumented and difficult to suss out, so I wrote this script to compare table structures in one database vs another (say, test vs prod).
It's come in handy for me, maybe it will for you as well. It uses a CTE, so it will only work in SQL2005 and above. Just change the target database name in the JOIN clause and you're good to go. You can also include a linked server name to do the comparison against a remote server. Alter the WHERE clause at the end to suit your needs.
There are a couple things I may improve at some point. If an entire table is missing in your target, the script reports each and every column as "not found", rather than the whole table. The differences reported are also coded in a CASE statement, so it's not smart enough to tell you if there are two differences in one column. It's good enough for me at the time, though!
Cheers...