There is really no way to answer this question, other than to advise upgrading to a "real" database. That being said, if a single-user database is reaching 4GB without holding large blob
s, then you're doing something out of the ordinary.
Edit
One thing that many people neglect to consider is the RAM and CPU restriction on the Express edition for SQL Server. While 2008 and prior have database size limits of 4GB (10GB for 2008 R2, as pointed out in the comments for this question), you're far more likely to be negatively impacted by the 1GB RAM and single CPU limitations, especially with data sets that large.
Archiving is (almost) never a simple solution, since that usually involves either breaking existing relationships or duplicating data. For example, consider I have a database of Customer
s and Order
s.
Order
Customer ----------
--------- OrderID
CustomerID <--- CustomerID
... ...
The natural choice here is to create a foreign hey between the two CustomerID
columns, making it non-nullable in the Order
table. But what happens when I want to archive the orders? Either I have to break the relationship in the archive database (allowing it to link to a CustomerID
that doesn't exist in the archive database) or I have to duplicate the data (archive the linked Customer
record, while still keeping it around in the live database). Neither option is particularly desirable from a maintenance perspective.