.NET Questions (CLOSED)

Questions and Answers on any aspect of .NET. Now closed.

This discussion group is now closed.

Have a question about .NET development? Try stackoverflow.com, a worldwide community of great developers asking and answering questions 24 hours a day.

The archives of .NET Questions contain years of Q&A. Even older .NET Questions are still online, too.

db40 compared to SQL Server Express

Im in the process of picking a database for my app and initially I was just going to use SQL Server Express. However, after some surfing I came across an Object Oriented database named, db40, which makes a pretty sexy case for abandoning SQL altogether.

Has anyone had any experience with this database?
Joo
Monday, February 06, 2006
 
 
Just looking at the site, it is licenced for commercial use. SQL Server express isn't.
Ace
Tuesday, February 07, 2006
 
 
"SQL Server express isn't. "

What are you calling commercial use? I was under the impression that SQL Server Express is available for commercial use. Do you have a specific licensing link that tells you this? Are you sure that you aren't talking about the Developer Edition? If it's not available for commercial use then why have it at all?
Turtle Rustler
Tuesday, February 07, 2006
 
 
Turtle,

That was my initial reaction to Ace's comment as well. I don't think Ace is saying that you can't use SQL Server 2005 Express for production use; you obviously can. I think Ace is referring to embedding into commercial applications as outlined here:

http://www.db4o.com/commercial/

Although, one could argue that the facility to ship SQL Server Express with an application and bind it tightly via .NET is the equivalent of the db4o embedding.
Mike Green Send private email
Tuesday, February 07, 2006
 
 
Mike, very interesting. But from your link it says that embedding db40 into your application costs $9 per seat when purchased in increments of 10,000. I wonder what it costs when purchased in increments of 1 seat?!?!? SQL Server Express can be redistributed for free with your application once you agree to the licensing terms and submit the redistribution form.

Also, db40 doesn't give you any direct pricing up front. You have to contact their "sales guys" and get a high pressure sales pitch first. No thanks...
Turtle Rustler
Tuesday, February 07, 2006
 
 
Yes, it is difficult to beat the SQL Server 2005 Express price tag of free. I'll be sticking with SQL Server unless someone can come up with a compelling case to switch.
Mike Green Send private email
Wednesday, February 08, 2006
 
 
One compelling case to switch to db4o is the fact that you save tons of lines of code to persist objects rather than transitioning them into relational tables, and also achieve a much better performance, especially when you talk about complex object models.  Once you refactor you class model, db4o automatically updates the schemas, so maintaining your code also becomes much more seamless. 
With Native Queries you have a database API that is entirely in C#, which gives you type-safety (-> less errors) and automatic refactoring through the IDE, if you ever decide to change your model.  Just do that with SQL Express and you know what I mean.

With the time (and resources) you save, you can easily afford the very low (commercial) licensing fees, which start at $199 per seat - to answer the question above.  You can also use db4o's free GPL version as long as you don't redistribute your derivative work or open its sources under the GPL, too.

Hope this helps,

Christof
Objects Are Here to Stay!
Christof Send private email
Saturday, February 11, 2006
 
 
If you can show me an easier way to do the following I will consider it:

ALTER PROCEDURE [dbo].[spGetEVByChargeCode]
    @timeslot int
AS

DECLARE @statusDate datetime
SELECT @statusDate = endDate FROM Periods WHERE periodID = @timeslot

--Set NOCOUNT ON to stop intermediate server messages
SET NOCOUNT ON

--Create a temp table to hold earned value from tasks with milestones
CREATE TABLE #EarnedValue (
    codeID int,
    EV money)

--Populate the earned value temp table using milestone status based on the supplied status date
INSERT INTO #EarnedValue
SELECT z1.codeID,
    (SELECT SUM(milestoneValue * percentComplete) FROM Milestones k
        JOIN MilestoneStatus l ON k.milestoneID = l.milestoneID
        WHERE milestoneCode = z1.codeID AND statusDate =
        (SELECT MAX(statusDate) FROM MilestoneStatus m
         WHERE statusDate <= @statusDate AND m.milestoneID = k.milestoneID)) AS EV
FROM ChargeCodes z1

--Create table of LOE charge codes
CREATE TABLE #LOE (
    codeID int,
    EV money)

--Populate the LOE table with earned value amounts
INSERT INTO #LOE
SELECT d3.codeID, 
    (SELECT SUM(CASE
        WHEN g.taskFinish <= @statusDate THEN (plannedHours * e.laborRate)
        WHEN g.taskStart >= @statusDate THEN 0
        ELSE ((plannedHours * e.laborRate)/DATEDIFF(dy, g.taskStart, g.taskFinish)) *
            DATEDIFF(dy, g.taskStart, @statusDate)    
        END)
     FROM PlannedHours e
     JOIN Tasks g ON e.taskID = g.taskID
     WHERE g.taskCode = d3.codeID)
FROM
(SELECT d1.codeID, SUM(milestoneValue) AS EV FROM ChargeCodes d1
 LEFT JOIN Milestones d2 ON d1.codeID = d2.milestoneCode GROUP BY d1.codeID) AS d3
WHERE d3.EV IS NULL

--Update the earned value temp table with the LOE charge code EV amounts
UPDATE ev1
SET ev1.EV = loe1.EV
FROM #EarnedValue ev1 JOIN #LOE loe1 ON ev1.codeID = loe1.codeID

--Drop the LOE temp table
DROP TABLE #LOE

-- Main code for EV worksheet. Gets the primary EV numbers for use in code or manual operations
SELECT a.codeID,
    a.chargeCode,
    a.codeDescription,
    (SELECT SUM(plannedHours * laborRate) FROM PlannedHours b
     JOIN Tasks z5 ON b.taskID = z5.taskID
     WHERE z5.taskCode = a.codeID) AS budget,
    (SELECT MIN(j1.Dt) FROM (
        SELECT taskStart AS Dt FROM Tasks h1 WHERE h1.taskCode = a.codeID
        UNION
        SELECT milestoneDueDate AS Dt FROM Milestones i1 WHERE i1.milestoneCode = a.codeID) AS j1) AS Begins,
    (SELECT MAX(j.Dt) FROM (
        SELECT taskFinish AS Dt FROM Tasks h WHERE h.taskCode = a.codeID
        UNION
        SELECT milestoneDueDate AS Dt FROM Milestones i WHERE i.milestoneCode = a.codeID) AS j) AS Ends,
    (SELECT SUM(CASE
        WHEN g.taskFinish <= @statusDate THEN (plannedHours * e.laborRate)
        WHEN g.taskStart >= @statusDate THEN 0
        ELSE ((plannedHours * e.laborRate)/DATEDIFF(dy, g.taskStart, g.taskFinish)) *
            DATEDIFF(dy, g.taskStart, @statusDate)    
        END)
     FROM PlannedHours e
     JOIN Tasks g ON e.taskID = g.taskID
     WHERE g.taskCode = a.codeID) AS PV,
    (SELECT SUM(CASE
        WHEN d3.endDate <= @statusDate THEN  (laborHours * d2.laborRate)
        WHEN d3.startDate >= @statusDate THEN 0
        ELSE ((laborHours * d2.laborRate)/DATEDIFF(dy, d3.startDate, d3.endDate)) *
            DATEDIFF(dy, d3.startDate, @statusDate)
        END)
     FROM ActualHours d2
    JOIN Periods d3 ON d2.period = d3.periodID
     WHERE d2.chargeCode = a.codeID) AS AC,
    (SELECT EV FROM #EarnedValue t1 WHERE t1.codeID = a.codeID) AS EV
FROM ChargeCodes a
ORDER BY a.chargeCode

--Reset server messages
SET NOCOUNT OFF

--Drop the EV temp table
DROP TABLE #EarnedValue
Eric Send private email
Wednesday, February 15, 2006
 
 
how about sqllite?
c depue Send private email
Wednesday, February 22, 2006
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz