views:

846

answers:

7

I'm setting up an application, and I'm looking into purchasing a license for SQL Server. My question is pretty simple (though may have a complicated answer...)

How many users accounts do I really need, for SQL Server?

The way I see it, I'd give one master administration account, maybe 2 or 3 user accounts, and then one application-based account.

My application will likely have about 30-40 users, with the rare possibility of having 4-5 people being simultaneous users. But as I see it, I'd set up a BLL with the 30-40 accounts - and the BLL would have the SQL account, that all 30 accounts would use to query the DB through...

I'm just wondering what people's take on this is. Is that the way to go, or do I have the wrong idea of architecture here?

A: 

You do know that commercial use of SQL Express 2005/2008 is allowed and may be perfectly suitable for your scenario?

You can always upgrade at any time to Standard Edition should you need it.

For a comparison of the editions of MS SQL Server check here. It also includes their limitations. I am convinced that for your scenario SQL Server Express would do very nicely (provided your DB is not bigger than 4GB).

Wim Hollebrandse
Express has limit of 1gb of ram which is not a small amount. You can then have as many users as you want. In one of my clients companies there are 4 people working, 3 of them with 2 db apps at once and that perfectly suits the needs.
kubal5003
Unfortunately my Database is larger than 4gigs, which I believe is the maximum for SQL Server Express.
AlishahNovin
Darn. Yes, if you hit the 4GB DB limit, that's SQL Express out the window. I'm guessing some of the data is archive data? You could archive that off to a separate 4GB DB. ;-)
Wim Hollebrandse
A: 

If your application relies on a BLL which proxies many users onto the SQL Server instance, then I think you can't get a license based on number of accounts.

Microsoft will tell you that you need a per-processor license. (And that's cheaper than buying 30-40 CAL licenses)

Patonza
+5  A: 

Your case is called Multiplexing ans is covered in the special considerations Using Middleware, Transaction Servers, and Multitiered Architecture:

Sometimes organizations develop network scenarios that use various forms of hardware and/or software that reduce the number of devices or users that directly access or use the software on a particular server, often called "multiplexing" or "pooling" hardware or software. Use of such multiplexing or pooling hardware and/or software does not reduce the number of client access licenses (CALs) required to access or use SQL Server software. A CAL is required for each distinct device or user to the multiplexing or pooling software or hardware front end. This remains true no matter how many tiers of hardware or software exist between the server running SQL Server and the client devices that ultimately use its data, services, or functionality

Bottom line: you need one CAL for every user, to a toal of 35-45 licenses.

Remus Rusanu
Multiplexing! Thanks for that! I knew there was a term for it, I just had a hard time getting the right search query to find the term.So just to be clear, does that also account for when you set up the ASP.NET user account as the account to read/write to the Db? Because technically, wouldn't you then need to buy a new CAL each time a new user registers on your website?My app isn't a website, so I don't have that problem, but I'm just trying to grasp how all that works. It was my understanding that one box can be considered the "user" and it proxies your end-users.
AlishahNovin
One point, I read the last sentence on the MS site, and it says the following: "An additional exception is communication exclusively between the servers running SQL Server."Does a BLL/DAL architecture not do that?
AlishahNovin
The application accounts (like the ASP.Net account) is not considered a separate account. You have 30 users using the intranet app and ASP.connects with IUSR_Foo, you need 30 CALs, not 30+1. Be warned though, I'm an not a lawyer, nor do I play one on TV...
Remus Rusanu
If you multiplex an unknown number of users (eg. website) then you are required to go with a per processor license, but in those cases you can use a the Web Edition, which is dirt cheap: http://www.microsoft.com/sqlserver/2008/en/us/web.aspx
Remus Rusanu
The web edition is not allowed for internal (business-only) use, ie on an Intranet. "SQL Server 2008 Web may be used only to support public and Internet accessibleWeb pagesWeb sitesWeb applicationsWeb servicesIt may not be used to support line of business applications (e.g., Customer Relationship Management, Enterprise Resource Management and other similar applications)"
CodeByMoonlight
Oh, I missed that small detail...
Remus Rusanu
+1  A: 

My understanding is that you need a CAL for every distinct user or device that utilises the SQL Server so 30-40 in your case. Accounts are just sets of credentials that authenticate against the server, whereas users are sacks of meat. License sacks of meat, not accounts.

It's an easily misundertood area though and I would advise contacting Microsoft Licensing to find out the real deal.

Martin
I guess I may need to, because the way I see it, the 30-40 users are only users on the application that hits the Biz layer box. They are not "direct" users to SQL Server.I would certainly understand if there was a third-party app that, for example, made a simply DB UI, and you had all the users hit that third party app, one could certainly make the claim that they are actually users of SQL Server, but in the case I'm thinking of, the users are a little more removed than that... they are users of the product, and the product itself uses SQL Server as it's db engine.
AlishahNovin
A: 

Here's what the MS Sql Server FAQ says:

For externally focused server applications. Processor licensing is a better choice for externally focused server applications, such as Internet and extranet scenarios. It is often difficult to count devices or users in these scenarios, so hardware-based pricing is more straightforward.

For mixed-use servers. For mixed-use servers that will be accessed from both inside and outside the organization's firewall, processor licensing is generally favorable. Because the processor licenses are probably needed for external users, there would be no need to purchase access separately for internal users through CALs.

For environments inside the firewall. For environments inside the firewall where client-to-server processor ratios are relatively low, the server plus device CAL licensing model will likely be the more cost-effective choice if there are multiple users per device (for example, in a call center), while the server plus user CAL licensing model will likely be more cost-effective if there are multiple devices per user. For environments inside the firewall where client-to-server processor ratios are high, the processor licensing model will likely be more cost-effective.

AlishahNovin
A: 

Unless you do something tricky with proxy authentication & auditing you will only have a login for the application. Otherwise, I would license by processor.

Nate Zaugg
+1  A: 

The simple answer is...

You need a CAL for every distinct user or device that connects to SQL Server, regardless of "multiplexing" or web server or proxy between end user and SQL Server install.

If you can't physically count and quantify them (eg public web site), you need processor licenses.

More...

  • What if you expand the shop or userbase?
  • CALs become more expensive then per-processor at some point
  • You rarely license a single box.
  • What about failover in production?
  • Non-prod licenses (Test/dev boxes) -> get an MSDN subcription

My advice: talk to MS or whoever deals with your licenses in your shop. You'll already have an agreement with MS for the OS and Office at least.

gbn