I'm moving from MS Access to MSSQL, and I have a question about data types.

In my Access database, I had tables with columns of the following data types:

Text (for short text entries)
Memo (for long text entries)
Number (numeric entries)
Date/Time
Autonumber (auto-incrementing numeric field)
Yes/No

When MSSQL was installed, ALL my databases (12 in total) were combined into one huge database. When this happened, a few things changed.

1) ALL text fields, whether "Text" or "Memo" were converted to "nvarchar".
2) SOME numeric fields were changed to "int" while others were changed to "float".
3) ALL primary keys were lost, and at least one autonumber field stopped auto numbering.
4) Yes/No fields were changed to "bit".
5) Date/Time were retained as "datetime".

So my questions are...

1) Is nvarchar suitable for handling the old Memo field length? We have some tables with quite a lot of data in those fields, and I don't want anything cut off.

2) What's the difference between "int" and "float", and why were some numeric fields converted to one type and others to the other type?

3) Is it normal to lose primary keys when importing from Access to MSSQL? I sort of need those keys!

We're re-doing the import in another week or so, so if there's anything I need to change, that'll be a good time to do it.