When you move a Microsoft Access table to SQL Server either with the Upsizing Wizard or by exporting the table, the data types change to their corresponding SQL Server data types. Since SQL Server bases its data types on the C programming language while Microsoft Access bases its data types on the Visual Basic programming language, the data types are converted as described in the following table. Though you can easily change a field's data type in Microsoft Access, it is not possible to change a data type in SQL Server. A new table must be created and the data can then be transferred to that table. You may want to review your data types before upsizing and make any desired changes before moving the table.
Microsoft Access | SQL Server |
Text | Varchar * |
Memo | Text |
Byte | Smallint |
Integer | Smallint |
Long Integer | Int |
Single | Real |
Double | Float |
Replication ID | Varbinary |
Date/Time | Datetime |
Currency | Money |
Autonumber (Long Integer) | Int (Identity) |
Yes/No | Bit |
OLE Object | Image |
* For more information about modifying the Upsizing Wizard to transfer Microsoft Access text files as char fields instead of varchar fields, see "Changes to Your Data" in this paper.
The following table shows a SQL Server data type and how it is displayed by Microsoft Access when the table is linked.
SQL Server | Microsoft Access |
Binary | Binary |
Varbinary | Binary |
Char | Text |
Varchar | Text |
Datetime | Date/Time |
Smalldatetime | Date/Time |
Decimal | Text |
Numeric | Text |
Float | Double |
Real | Single |
Int | Integer |
Smallint | Integer |
Tinyint | Integer |
Identity | Autonumber |
Money | Currency |
Smallmoney | Currency |
Bit | Yes/No |
Timestamp | Binary |
Text | Memo |
Image | OLE Object |
User-defined data types | Varies |