|SQL Server 2000 divides the database's storage into 8KB pages. A single row cannot span pages, it must fit within a single page. The exception is that text, ntext and image columns (referred to as LOBs, Large [or Long] OBjects) are (typically) stored off-page, although you can enable on-page storage with the 'text in row' table option for values that are smaller than 8000 bytes.
Because of this limit, it won't allow you to create a column whose size is bigger than this (8000 bytes for varbinary, 8000 characters for varchar, 4000 characters for nvarchar). If you create multiple large variable-length columns but the actual values you insert exceed 8000 bytes in total, you will get an error.
SQL Server 2005 adds new varchar(max) etc types. These can be used in identical ways to the limited variable-length types but are still stored off-row, unlike text and image columns which had some limitations. This is now the preferred way of storing LOB data. The old way will be removed in a future version of SQL Server (although I think still present in the upcoming SQL Server 2008).
DoEvents: Generating unexpected recursion since 1991