Any thoughts of how to solve this?
I tried creating another database and putting some tables there, but actually there is just 1 big table with almost 3 million rows, this table is using all the space, so separating tables is useless.
I though about migrating to MySQL, but the (former) programmer who used this database programmed it using SQL Server framework, and he sucked at it, so its a whole lot of code to change which I suppose it can be done but I don't have that much time.
I can't think of anything but to buy sql server, but I don't have that kind of money, I also thought of 'borrowing' it from a torrent or something like that, but my server is a dedicated server on gigenet and that would break the TOS.
thanks
If you have no money & your a struggling small business, then MS feels your pain, they love you & they want you to stick with sql server.
Check if you are eligible for Microsoft's bizspark program, which means you can get a free* web edition version of SQL Server, as well as a web edition of windows server.
*I think if you keep the license after 2 years, you owe microsoft $100.
If your not eligible then sharding if your only option & it will be painful.
not a solution, but a possible delay of the inevitable: get the 180-day trial version of sql server
PostgreSQL has a .NET connector (you never said it's written in) so it might be easier to move to that then MySQL.
Microsoft SQL Server Express 2008 R2 Now has a 10gb databases limit, instead of the 4gm limit on SQL 2005. You should be able to upgrade to this version relatively painlessly.
If money is such a concern, you should really focus on converting your application to use a free database like MySQL or PostgreSQL. But with that said...
It would be helpful to know a bit more about your situation. Which licensing option is best for you is highly dependent on how your application is being used.
If you are actively designing, developing, or testing your application, you can use the Developer edition which does not have a 4GB limit. A license is inexpensive, and students can get it free through Dreamspark. If you are in education or part of a charity, you can take advantage of steep discounts that way.
If the above options don't apply to you, it would be useful to know how many users will be using your application, so that you can decide between per-processor or per-server licensing. Per-server licensing necessitates the purchase of CALs for each user of the database.
You could partition the table.
Basically this means splitting the data from a single table into multiple smaller ones. This is usually done for performance reasons, but it might save your bacon here. There's two ways to go about it:
Horizontal Partitioning: Have multiple tables with identical schemas, with rows split between them. For example, all customers whose zip code is < 50000 go into table
A
, the rest go into tableB
. Alternately, you could use this same sort of scheme to "archive" old data for situations where the age of the data is significant (such as a forum). All entries older than a month get sent to a secondary (tertiary, etc.) database, with the location keyed based on the age of the information. This information isn't queried unless the user performs explicitly asks for old records.Vertical Partitioning: Split the schema of the table so that some of the columns go into one table, some into another. Use the same primary key on all tables to link the rows. For example, a customer's name and address go into one table, his photo into another, and his billing information into another. Usually you want to partition it up so that data that is referenced less often doesn't have to be loaded.
I realise that this is an old question, but why did nobody suggest an upgrade to SQL 2008 express? It has a per-database limit of 10 GB.