Pegar nome da instancia do SQLServer e utilizar em uma connectionString para aplicações distribuidas localmente
Autor: http://www.kcedd.com | Publicado: 2011-08-19T05:09:00-07:00

<!--[if gte mso 9]>     Normal   0         21         false   false   false      PT-BR   X-NONE   X-NONE                                                     MicrosoftInternetExplorer4                                                   <![endif]--><!--[if gte mso 9]>                                                                                                                                                                                                                                                                                                                                                                                                                                <![endif]--><!--[if gte mso 10]>   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabela normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin-top:0cm; 	mso-para-margin-right:0cm; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;}  <![endif]-->  Para obter o nome da instancia instalada do SQLServer pode ser feita e m C# desta forma:Primeiramente adicione: using Microsoft.Win32;            RegistryKey instancia = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server", false);             string[] inst;             inst = (String[])instancia.GetValue("InstalledInstances");Porém, para usar esta instancia em uma connectionString de uso em aplicações distribuídas para uso local devemos também ter o nome do computador em que a mesma for instalada,  pois para aplicações em rede bastaria informar o IP do servidor. Para obtermos o nome do computador poderiamos usar o seguinte código também acessando o registro:            RegistryKey registro = Registry.LocalMachine.OpenSubKey("SYSTEM", true);             RegistryKey registro2 = registro.OpenSubKey("CurrentControlSet", true);             RegistryKey registro3 = registro2.OpenSubKey("Control", true);             RegistryKey registro4 = registro3.OpenSubKey("ComputerName", true);             RegistryKey registro5 = registro4.OpenSubKey("ComputerName", true);              string NomeComputador = registro5.GetValue("ComputerName").ToString();Fiz das duas formas de acesso ao registro no primeiro caso da instancia acessei usando uma única subkey e para pegar o nome do computador fui abrindo uma subkey de cada vez.Para usar na connectionString poderia ser assim:string sDBstr = @"Server=" + NomeComputador\NomeDaInstancia + ";Database=master;Trusted_Connection=Yes";Veja a diferença para uma conexão de aplicação em rede. Poderia ser assim:string sDBstr = @"Server=192.168.0.1;Database=master;Trusted_Connection=Yes"; Isto para acesso via windows autentication nas duas situações.Até a próxima.