DOCUMENT:Q198660 11-JAN-2001 [vbwin] TITLE :DOC: Additional Jet Database Record Size Information PRODUCT :Microsoft Visual Basic for Windows PROD/VER:WINDOWS:4.0,5.0,6.0,7.0,97 OPER/SYS: KEYWORDS:kbdocfix kbAccess kbDatabase kbJET kbODBC kbVBp400 kbVBp500 kbVBp600 ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual Basic Professional Edition for Windows, versions 4.0, 5.0, 6.0 - Microsoft Visual Basic Enterprise Edition for Windows, versions 4.0, 5.0, 6.0 - Microsoft Access for Windows 95, version 7.0 - Microsoft Access 97 ------------------------------------------------------------------------------- SUMMARY ======= Because Microsoft Jet allows for variable length fields, you may occasionally receive DAO error 3047: "Record Too Large" This occurs if the physical storage requirements of a record exceeds the amount of free space available in a data page (about 2000 bytes). Appendix A of the Microsoft Jet Database Engine Programmer's Guide provides a list of factors you must take into account when estimating the size of a record in a Microsoft Jet database (MDB file). The book omits some information regarding MEMO and OLE fields. MORE INFORMATION ================ The Microsoft Jet Database Engine Programmer's Guide, Appendix A, documents that Microsoft Jet stores MEMO and OLE fields on separate pages (Long Value pages) from the rest of the record. And that for every non-NULL MEMO or OLE field, there is a 12-byte overhead in the main record that points to the location of the start of the Long Value page chain. Appendix A, however, does not document that Microsoft Jet 3.5 and earlier will attempt to store the MEMO or OLE value in the main record if the size of the data is less than or equal to 32 bytes. This results in faster lookup of these values and does not incur an additional 2K storage overhead, but does retain the 12-byte overhead. If the record is very large, (approaching 2000 bytes for example, the maximum record size), the MEMO and OLE fields will be stored in a Long Value page even if 32 bytes or less. For Jet 4.0 (VB6.1, Office 2000), this limit is increased to 64 bytes (not 64 characters). Also for Jet 4.0, the page size is increased from 2K to 4K and the maximum record size has increased to approximately 4000 bytes. (c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Malcolm Stewart, Microsoft Corporation Additional query words: ====================================================================== Keywords : kbdocfix kbAccess kbDatabase kbJET kbODBC kbVBp400 kbVBp500 kbVBp600 Technology : kbVBSearch kbAudDeveloper kbAccessSearch kbZNotKeyword6 kbAccess97 kbZNotKeyword2 kbVB500Search kbVB600Search kbVBA500 kbVBA600 kbVB500 kbVB600 kbAccess97Search kbAccess95Search kbVB400Search kbVB400 kbZNotKeyword3 kbAccess700 Version : WINDOWS:4.0,5.0,6.0,7.0,97 Issue type : kbinfo ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.