Every time I think I have a handle on licensing, I turn out to be wrong. A co-worker brought this to my attention the other day. It appears that for every licensed SharePoint user who accesses a SharePoint site, an additional SQL Server CAL must also be purchased. This nearly doubles the cost of deploying SharePoint on any significant scale.
I didn't want to believe this, because my assumption had been that since the SharePoint service account accesses data on behalf of the user, a SQL license was only required for one SQL user.
But this is not the case.
1. I called Microsoft Sales and they pointed me to their authoritative document, where it lays out the Product Use Rights for all their products. For SQL Server, it says:
· You must acquire and assign a CAL to each device or user that accesses your instances of the server software directly or indirectly. A hardware partition or blade is considered to be a separate device. The appropriate CAL for each product is listed in the table below (Page 43).
So SharePoint is considered to be an indirect connector to the service provided by SQL Server, and each user must be licensed, even anonymous users.
2. I asked about SQL Server 2008 Web Edition, which is specially licensed (and cheaper) for web applications powered by databases. One constraint is this (Page 53):
For SQL Server 2008 Web:
The software may be used only to support public and Internet accessible
· Web pages
· Web sites
· Web applications
· Web services
It may not be used to support line of business applications (e.g., Customer Relationship Management, Enterprise Resource Management and other similar applications).
So this means it only applies to publicly accessible Extranet / Internet SharePoint sites, and not so much to internal Intranet sites.
None of this licensing is audited; it is managed on an honor system. Licenses are purchased based on anticipated usage.
Depending on which edition of SQL Server the customer is running, it may be more economical to purchase a Processor License, which covers a single processor and all its cores, instead of a set of CALs. For example, an Enterprise SQL CAL costs $162 plus the base server price of $8487. If you had more than 150 users, you'd want to consider a processor license.
For the small scale, it is best to begin with SQL Express, which does have some pretty severe limitations, but is easily upgradeable to any higher edition of SQL.
The free version is unlicensed, but also limited in functionality:
- Instance can only utilize 1GB of memory
- Combined database size is limited to 4GB
- Lack of SQL Agent for automated backups
- Throttling of connections and performance
- etc.
But you can upgrade it later to a full version. It's a tradeoff. So for smaller companies I'd advise SQL Express with Advanced Services, which is free, and comes with SQL Server Management Studio.
Here is a blog post that lays out different scenarios: