Internet Connection Pricing

8. June 2011 18:26

 

Coming fromt he UK I have always been a little annoyed about the way broadband is sold to end users. Typically the internet providers tend to attempt to sell their services as unlimited and then have a limit in the small print. Personally I think this is grossly unfair and should not be permitted to continue. I actually think the speed the internet providers is also grossly mis leading along with there connections. Since the more modern connections are now performing at very decent speeds of up to 24 mbits / sec. I have decided to have a look at the figures just to see exactly what the internet providers actually offer in terms of usage.

 

When I talk about usage I am actually talking about thoughput. Lets face it once you get speeds faster than 5mbits a second you can stream videos from youtube / iplayer and anything else. So lets look at some providers on the bases of how much you can stream and the value for money you are really getting.

 

I am going to start with plusnet. I used to use them when adsl first arrived inside the UK. Connections were 0.5mbit and it was a real step up from modem speeds at the time. so I decided to look at their top end package of what they could offer me. Though I would point out that they are more honest than most and tell you directly what the limits on the connections are and don't attempt to hide it in the small print. Looking at their website I can figure out the following on their up to 20mbit connection

 

  • Limit - 60GBytes
  • Cost - £11.49
  • Cost / GByte - £0.19
  • Maximum Usage @ 20MBit - 13 Minutes / Day

 

Now lets look at a massive provider inside the UK called BT. I have used connections from BT in the past and a lot of small companies have used them. I have found their technical support (if you could call it that) to be dreadfull with long wait times. Long response times. Long fix times (eg > 1 Week). Not only that but when you look at their largest package they offer an unlimited service. At first this always seems great. However they apply a fair usage policy to their connection at 100Gb. Though their 40Mbit FTTC service looks great (at first glance). This is what I think of them after some calculations.

 

  • Limit - 100GBytes
  • Cost - £28
  • Cost / GByte - £0.28
  • Maximum Usage @ 40 MBit - 11 Minutes / Day

 

So already you can see a pattern. First they are actually more expensive than plusnet. What I find most shocking about this unlimited service is that they consider maximum bandwidth usage of 11minutes / day "fair usage".

 

Now lets look at a smaller provider that I am currently using called BEThere. They are actually the longest provider I have been with which has not applied a "fair usage" policy or I have become so frustrated with. They do have a hidden fair usage policy on their "unlimited" service but I have not been able to find any information to why it was applied. I have seen their connections regularly support downloads of greater than 200GB / Month usage so I for the calculations I am going to put in a guess at 300GB or so. Though I have heard other people who are closer to 300-400GB in usage and still don't have problems. I would also add any support problems have always been corrected within 24-48. Normally within the first 2-4 hours of them occuring.

 

  • Limit - Mayby 300GB?
  • Cost - £22 (I think its up to £27 now)
  • Cost / GBytes - £0.07
  • Maximum Usage @ 24 Mbits - 56 Minutes / Day

 

So there you have it. A completly different way to look at picking an internet provider. I think the reasons for the cost differences are very obvious as well. Plusnet, BT always seem to offer additional services. BEThere don't offer additional services other than an outbound email relay. They provide an internet connection and almost nothing else. So it would appear the company that offers less actually offers *a lot* more.

E-mail Kick it! DZone it! del.icio.us Permalink


Scams - The WOW scam

8. June 2011 17:52

Looks like a new world of worcraft scam seems to be doing the rounds recently.

 

It has come to our attention that you are trying to sell your personal World of Warcraft account(s). As you may not be aware of, this conflicts with the EULA and Terms of Agreement. If this proves to be true, your account can and will be disabled. It will be ongoing for further investigation by Blizzard Entertainment's employees. If you wish to not get your account suspended you should immediately verify your account ownership. 

 

E-mail Kick it! DZone it! del.icio.us Permalink


MSSQL - DBCC Check DB

7. June 2011 19:00

 

If you have ever come across a problem where the mssql host (eg windows) has crashed for some reson or another that you may have also come across the problem of having a possible issue with some of the databases coming corrupt where here is a way to run the dbcc check db command for all databases on an ms sql instance.

 

 

EXEC sp_MSforeachdb @command1 = 'DBCC CHECKDB(?) WITH NO_INFOMSGS; 
		PRINT ''Checked ? Status:'' + CONVERT(VARCHAR(255), @@ERROR)'

 

 

Example output is simple. Anything with a status which is no "0" should be investigated.

 

Checked master Status:0
Checked tempdb Status:0
Checked model Status:0
Checked msdb Status:0
Checked JEPS Status:0
Checked distribution Status:0
Checked Testing Status:0
E-mail Kick it! DZone it! del.icio.us Permalink


MSSQL - Who locks what

3. June 2011 08:00

 

Locks are an important part of mssql server as they are used to protect the same information being changed by multiple clients at the same time when each of the clients don't expect the information to change at all. Sometimes it is important to find out what process or user has locks as long running quries can prevent other tasks from being able to retrive data from the database.

 

So below are a few quries for producing some basic information about who is locking what and just how many locks have been taken.

 

The following will produce locking information based on SPID, DatabaseName, LoginName and TotalLocks which are being held.

 

SELECT  L.request_session_id AS SPID, 
        DB_NAME(L.resource_database_id) AS DatabaseName,
		ES.login_name AS LoginName,
		COUNT(*) AS TotalLocks
FROM    sys.dm_tran_locks L
        JOIN sys.partitions P ON P.hobt_id = L.resource_associated_entity_id
        JOIN sys.dm_exec_sessions ES ON ES.session_id = L.request_session_id
        JOIN sys.dm_exec_connections CN ON CN.session_id = ES.session_id
		GROUP BY ES.login_name, L.request_session_id, DB_NAME(L.resource_database_id)
		ORDER BY DB_NAME(L.resource_database_id), ES.login_name

 

 

In certain enviroments the code above may not be that useful so the following will list the locks based on hostname instead of loginname.

 

 

SELECT  L.request_session_id AS SPID, 
        DB_NAME(L.resource_database_id) AS DatabaseName,
		ES.host_name AS LoginName,
		COUNT(*) AS TotalLocks
FROM    sys.dm_tran_locks L
        JOIN sys.partitions P ON P.hobt_id = L.resource_associated_entity_id
        JOIN sys.dm_exec_sessions ES ON ES.session_id = L.request_session_id
        JOIN sys.dm_exec_connections CN ON CN.session_id = ES.session_id
		GROUP BY ES.host_name, L.request_session_id, DB_NAME(L.resource_database_id)
		ORDER BY DB_NAME(L.resource_database_id), ES.host_name

 

 

The following will give SPID, LoginName, DatabaseName, LockedObjectName and the total locks which are being held.

 

 

SELECT  L.request_session_id AS SPID, 
		ES.login_name AS LoginName,
        DB_NAME(L.resource_database_id) AS DatabaseName,
        O.Name AS LockedObjectName, 
		COUNT(*) AS TotalLocks
FROM    sys.dm_tran_locks L
        JOIN sys.partitions P ON P.hobt_id = L.resource_associated_entity_id
        JOIN sys.objects O ON O.object_id = P.object_id
        JOIN sys.dm_exec_sessions ES ON ES.session_id = L.request_session_id
        JOIN sys.dm_exec_connections CN ON CN.session_id = ES.session_id
		GROUP BY ES.login_name, L.request_session_id, DB_NAME(L.resource_database_id), O.Name
		ORDER BY DB_NAME(L.resource_database_id), ES.login_name

 

E-mail Kick it! DZone it! del.icio.us Permalink


MSSQL - Enum

26. May 2011 18:38

 

Some database engines support enum. Some database engines do not. Or do they? If you have ever tried to create a table with a field with an enum you will know that it is not possbile. However it is possible to simulate the same functionality using a constraint.

 

Here is a quick chunk of code to demonstrate how this is possible. What we are aiming for is to make sure that on a contact table a gender field is either populated with M, F, U (male / female / unknown).

 

Lets create a customer table with the following.

 

CREATE TABLE [dbo].[Customer](
	[FirstName] [nvarchar](64) NULL,
	[LastName] [nvarchar](64) NULL,
	[Gender] [varchar](1) NULL,
) ON [PRIMARY]
GO

 

Now that we have a table we can change it slightly so our constraint will work.

 

ALTER TABLE [dbo].[Customer] 
	WITH CHECK ADD  CONSTRAINT [CK_CustomerGender]
		CHECK  (([Gender]='U' OR [Gender]='F' OR [Gender]='M'))
GO

 

Now we have the constraint we will be able to test it using the following. First of all lets insert a row which we know is valid

 

INSERT INTO Customer (FirstName, LastName, Gender)
	VALUES('fjskafs', 'fsvxxvbc', 'M')

 

Now lets try an invalid value

 

INSERT INTO Customer (FirstName, LastName, Gender)
	VALUES('fjskafs', 'fsvxxvbc', 'A')

 

We get the following error message

 

The INSERT statement conflicted with the CHECK constraint "CK_Customer". The conflict occurred in database "Mess", table "dbo.Customer", column 'Gender'

 

Now then table has the same functionality as an enum.

E-mail Kick it! DZone it! del.icio.us Permalink