Quem nunca precisou definir uma classe que implementasse o padrão singleton? HA HA  Segue abaixo dois exemplos prontos para serem utilizados de conexão com o SQL Server.  Um é o padrão singleton thread safe e o outro é o padrão not thread safe, a diferença principal entre ambos é que para a utilização em ambientes multi-thread e onde o momento de instanciação da classe possa demorar um tempo considerável por ter de executar muitas tarefas o ideal é que seja utilizado o padrão thread safe, pois ele garante que haverá apenas uma instância da classe mesmo em um ambiente multi-thread, isto pode acarretar em um bloqueio do trecho de código que é o construtor da classe e um bloqueio para as demais requisições pela instância da classe até que a instanciação da mesma tenha sido realizada.  Já o padrão not thread safe não implementa este bloqueio na sua instanciação, o que pode causar a existência de duas instâncias de uma mesma classe quando em ambiente multi-thread.