Appendix A: Data Type Conversions

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