Licensing Headache

  • Okay, I've been looking everywhere for help on this. We have a number of SQL Server boxes. Some of them we have licensed with processor licenses because of web apps. However, we have quite a few of them that could possibly be licensed by CALS since they support internal applications. The question is, is there some type of automatic way to determine how many cals each application uses? There are multiple databases on these machines so there are multiple apps. Could I write the connections to a SQL table in read that information to determine who is accessing an app? Is there a way to limit a workstation from connecting to the app? I am in an environment with about 8000 users so this is no small task. Help!?:

    Thanks

    Kim

  • If 8000 users access the servers, you'd license on a per seat basis and license 8000 users. The CAL is by user, not workstation or app.

    If you have significantly less users accessing servers and it's a small # per server, then you can license per server instead.

  • Thanks so much for responding. Actually, we don't have 8000 users accessing the apps. Some apps have about 30, some have 15, some we aren't even sure of. I'm really looking to see if there is a way that someone is managing this without all out guessing or over buying cals. I can't see buying a processor license for a server that has 4 apps with 20 user's accessing each one. But I don't want to buy 8000 cals cuz they really won't be needed. Is there a way to capture the connection information perhaps over time and purchase a cal for each workstation that connects? Seems like there should be others out there with this problem?

     

    Thanks Again!

    Kim

  • There isn't a good way. You can run sp_who2 on each system every 5 minutes and get a high water mark for connections. That would tell you the per server usage. For the per seat, you'd have to do this some other way.

  • What about traces? You can set up a trace to log your logins specifying NTuserName and LoginName and also a DatabaseName or DatabaseID field in the Data Columns for the events Audit Login and Audit Logut or Audit Login Failed. It could be done by running a script, so it would run without Profiler being open on the workstation or server.

    Another idea: why don't you setup 1 database server licensed per processor with good hardware for several application servers if only a few users use each application? You may keep all of your internal databases on 1 server and may keep your current application setup with several applications on each application server

    Yelena

     

    Regards,Yelena Varsha

  • Another way to get a high water mark would be to watch the perfmon object, user connections. 

     

    Here's another tidbit that works very well when the Licensing Logging service (sp ?) is running on the OS.

     

    SET NOCOUNT ON

    BEGIN

       DECLARE @ProcessorCount  VARCHAR(10)

       --

       CREATE TABLE #tempProcessorCount ([Index]           INT,

                                         [Name]            VARCHAR(30),

                                         [Internal_Value]  VARCHAR(10),

                                         [Character_Value] VARCHAR(10))

       --

       INSERT #tempProcessorCount

       EXECUTE ('master..xp_msver ProcessorCount')

       --

       SELECT @ProcessorCount = [Internal_Value] FROM #tempProcessorCount

       --

       DROP TABLE #tempProcessorCount

       --

       SELECT CAST(@@SERVERNAME AS VARCHAR (40)),

              CAST(SERVERPROPERTY('productversion') AS VARCHAR(16)),

              CAST(SERVERPROPERTY('edition')        AS VARCHAR(40)),

              @ProcessorCount,

              CAST(SERVERPROPERTY('LicenseType')    AS VARCHAR(40)),

              CAST(SERVERPROPERTY('NumLicenses')    AS VARCHAR(10))

       --

       SET NOCOUNT OFF

    END


    "Keep Your Stick On the Ice" ..Red Green

  • My understanding of CALs they are assigned to individuals.  So you need to get a list of individuals that can access a database on a server either directly or through an application.  Once an individual has a CAL they are licensed for all servers setup for Cal licensing.

    I use security to identify these people. 

    1) If I grant an individual access to a server they need one CAL. 

    2) If I grant a domain group access, each person in that group needs a CAL. 

    3) If someone has a MSDN license they don't need a CAL, a MSDN license is so expensive it includes a CAL type license.

    4) If they are using a SQL Id to access the server, everyone who uses it needs a CAL.  You can use SP_WHO to identify the PC they are accessing the database from.  

    CAL license are very cheap when compared to Processor licenses.  Getting 10-20 extra is not that bad.  If you can't identify most of the individuals needing a CAL licenses you can try user connection counts as mentioned in an earlier memo.  A User can be using more than one connection but still only needs 1 CAL license.

     

     

     

    David Bird

Viewing 7 posts - 1 through 6 (of 6 total)

You must be logged in to reply to this topic. Login to reply