{"id":203,"date":"2010-12-09T11:13:38","date_gmt":"2010-12-09T11:13:38","guid":{"rendered":"http:\/\/www.esds.co.in\/data-centers\/kb\/?p=203"},"modified":"2017-10-30T13:52:48","modified_gmt":"2017-10-30T13:52:48","slug":"a-list-of-mssql-servers-to-managed-c","status":"publish","type":"post","link":"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/","title":{"rendered":"A list of MS SQL servers to managed C + +"},"content":{"rendered":"<p>#include &#8220;stdafx.h&#8221;<\/p>\n<p>using namespace System;<br \/>\nusing namespace System::Collections;<br \/>\nusing namespace System::Collections::Specialized;<br \/>\nusing namespace System::Net;<br \/>\nusing namespace System::Net::Sockets;<br \/>\nusing namespace System::Threading;<br \/>\nusing namespace System:ata;<br \/>\nusing namespace System:ata::OleDb;<br \/>\nusing namespace System::Text;<\/p>\n<p>namespace Util<br \/>\n{<br \/>\npublic ref class SqlServerInfo<br \/>\n{<br \/>\nprivate :<br \/>\nString^ m_ServerName;<br \/>\nString^ m_InstanceName;<br \/>\nbool\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m_IsClustered;<br \/>\nString^ m_Version;<br \/>\nint\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m_tcpPort;<br \/>\nString^ m_Np;<br \/>\nString^ m_Rpc;<br \/>\nIPAddress^ m_IP;<br \/>\nStringCollection m_Catalogs;<br \/>\nString^ m_UserId;<br \/>\nString^ m_Password;<br \/>\nbool\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m_IntegratedSecurity;<br \/>\nint\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m_TimeOut;<br \/>\npublic :<br \/>\nString^ srv_name(){ return m_ServerName; }<\/p>\n<p>SqlServerInfo(){}<br \/>\nbool Parser( IPAddress^ ip, array&lt;Byte&gt;^ bytes )<br \/>\n{<br \/>\ntry<br \/>\n{<br \/>\nint num = BitConverter::ToInt16( bytes, 1 );<br \/>\nASCIIEncoding^ ascii = gcnew ASCIIEncoding();<br \/>\nString^ info = ascii-&gt;GetString( bytes, 3, num );<br \/>\nreturn Parser( ip, info );<br \/>\n}catch(&#8230;){}<br \/>\nreturn false;<br \/>\n}<br \/>\nbool Parser( IPAddress^ ip, String^ info )<br \/>\n{<br \/>\nm_IP = ip;<br \/>\narray&lt;String^&gt;^ nvs = infSplit(&#8216;;&#8217;, 1);<\/p>\n<p>for (int i = 0; i &lt; nvs-&gt;Length; i += 2)<br \/>\n{<br \/>\nString ^item1 = nvs[i+1];<br \/>\nString ^item = nvs[i]-&gt;ToLower();<br \/>\nif( item == &#8220;servername&#8221; )<br \/>\n{<br \/>\nthis-&gt;m_ServerName = item1;<br \/>\n}else if( item == &#8220;instancename&#8221; )<br \/>\n{<br \/>\nthis-&gt;m_InstanceName = item1;<br \/>\n}else if( item == &#8220;isclustered&#8221; )<br \/>\n{<br \/>\nthis-&gt;m_IsClustered = (item1-&gt;ToLower() == &#8220;yes&#8221;);<br \/>\n}else if( item == &#8220;version&#8221; )<br \/>\n{<br \/>\nthis-&gt;m_Version = item1;<br \/>\n}else if( item == &#8220;tcp&#8221; )<br \/>\n{<br \/>\nthis-&gt;m_tcpPort = int:arse(item1);<br \/>\n}else if( item == &#8220;np&#8221; )<br \/>\n{<br \/>\nthis-&gt;m_Np = item1;<br \/>\n}else if( item == &#8220;rpc&#8221; )<br \/>\n{<br \/>\nthis-&gt;m_Rpc = item1;<br \/>\n}<br \/>\n}<br \/>\nreturn ( nvs-&gt;Length &gt; 0 );<br \/>\n}<\/p>\n<p>OleDbConnection^ GetConnection()<br \/>\n{<br \/>\nString^ myConnString = m_IntegratedSecurity ?<br \/>\nString::Format(&#8220;Provider=SQLOLEDB;Data Source={0};Integrated Security=SSPI;Connect Timeout={1}&#8221;, this, m_TimeOut)<br \/>\n: String::Format(&#8220;Provider=SQLOLEDB;Data Source={0};User Id={1};Password={2};Connect Timeout={3}&#8221;,<br \/>\nthis, m_UserId, m_Password, m_TimeOut);<\/p>\n<p>return gcnew OleDbConnection( myConnString );<br \/>\n}<br \/>\nbool TestConnection()<br \/>\n{<br \/>\nOleDbConnection^ conn = this-&gt;GetConnection();<br \/>\nbool success = false;<br \/>\ntry<br \/>\n{<br \/>\nconn-&gt;Open();<br \/>\nconn-&gt;Close();<br \/>\nsuccess = true;<br \/>\n}<br \/>\ncatch(&#8230;){}<br \/>\nreturn success;<br \/>\n}<br \/>\nvirtual String^ ToString() override<br \/>\n{<br \/>\nif( String::IsNullOrEmpty(m_InstanceName) || m_InstanceName == &#8220;MSSQLSERVER&#8221;)<br \/>\nreturn m_ServerName;<br \/>\nelse<br \/>\nreturn m_ServerName + &#8220;\\\\&#8221; + m_InstanceName;<br \/>\n}<br \/>\nStringCollection^ GetCatalogs()<br \/>\n{<br \/>\nStringCollection^ catalogs = gcnew StringCollection();<br \/>\ntry<br \/>\n{<br \/>\nOleDbConnection^ myConnection = this-&gt;GetConnection();<br \/>\nmyConnection-&gt;Open();<br \/>\narray&lt;Object^&gt;^ restrictions;<br \/>\nDataTable^ schemaTable = myConnection-&gt;GetOleDbSchemaTable( OleDbSchemaGuid::Catalogs, restrictions );<br \/>\nmyConnection-&gt;Close();<\/p>\n<p>for( int i = 0; i &lt; schemaTable-&gt;Rows-&gt;Count; i++ )<br \/>\n{<br \/>\nDataRow^ dr = schemaTable-&gt;Rows[i];<br \/>\nString^ dir = \u00a0dr[i]-&gt;ToString();<br \/>\ncatalogs-&gt;Add( dir );<br \/>\n}<br \/>\n}<br \/>\ncatch(Exception^ ex)<br \/>\n{<br \/>\nSystem::Windows::Forms::MessageBox::Show(ex-&gt;Message);<br \/>\n}<br \/>\nreturn catalogs;<br \/>\n}<br \/>\nstatic array&lt;SqlServerInfo^&gt;^ Seek()<br \/>\n{<br \/>\nSocket^ socket = gcnew Socket(AddressFamily::InterNetwork, SocketType:gram, ProtocolType::Udp);<\/p>\n<p>\/\/ \u00a0For .Net v 1.1<br \/>\n\/\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0socket-&gt;SetSocketOption(SocketOptionLevel::Socket, SocketOptionName::Broadcast, 1);<br \/>\n\/\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0socket-&gt;SetSocketOption(SocketOptionLevel::Socket, SocketOptionName::ReceiveTimeout, 3000);<\/p>\n<p>\/\/ \u00a0For .Net v 2.0 it&#8217;s a bit simpler<br \/>\nsocket-&gt;EnableBroadcast = true;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ for .Net v2.0<br \/>\nsocket-&gt;ReceiveTimeout = 3000;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ for .Net v2.0<\/p>\n<p>ArrayList^ servers = gcnew ArrayList();<br \/>\ntry<br \/>\n{<br \/>\narray&lt;Byte&gt;^ msg= {0x02};<br \/>\nIPEndPoint^ ep = gcnew IPEndPoint(IPAddress::Broadcast, 1434);<br \/>\nsocket-&gt;SendTo( msg, SocketFlags::None, ep );<\/p>\n<p>int cnt = 0;<br \/>\narray&lt;Byte&gt;^ bytBuffer = gcnew array&lt;Byte&gt;(1024);<br \/>\nArrayList^ lst = gcnew ArrayList();<br \/>\ndo<br \/>\n{<br \/>\ncnt = socket-&gt;Receive(bytBuffer);<br \/>\nIPAddress^ ip;<br \/>\nSqlServerInfo^ srv = gcnew SqlServerInfo;<br \/>\nif( srv-&gt;Parser( ip, bytBuffer ) )<br \/>\n{<br \/>\nString^ srv_name = srv-&gt;m_ServerName;<br \/>\nString^ inst_name = srv-&gt;m_InstanceName;<br \/>\nif( !String::IsNullOrEmpty( inst_name ) )<br \/>\n{<br \/>\nsrv_name = srv_name + &#8220;\\\\&#8221; + inst_name;<br \/>\n}<br \/>\nif( lst-&gt;IndexOf( srv_name ) &lt; 0 )<br \/>\n{<br \/>\nservers-&gt;Add( srv );<br \/>\nlst-&gt;Add( srv_name );<br \/>\n}<br \/>\n}<br \/>\nsocket-&gt;SetSocketOption(SocketOptionLevel::Socket, SocketOptionName::ReceiveTimeout, 300);<br \/>\n}while( cnt != 0 );<br \/>\n}<br \/>\ncatch (SocketException^ socex)<br \/>\n{<br \/>\nconst int WSAETIMEDOUT = 10060;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Connection timed out.<br \/>\nconst int WSAEHOSTUNREACH = 10065;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ No route to host.<\/p>\n<p>\/\/ Re-throw if it&#8217;s not a timeout.<br \/>\nif (socex-&gt;ErrorCode == WSAETIMEDOUT || socex-&gt;ErrorCode == WSAEHOSTUNREACH)<br \/>\n{<br \/>\n\/\/ DO nothing&#8230;&#8230;<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\n\/\/Console-&gt;WriteLine(&#8220;{0} {1}&#8221;, socex-&gt;ErrorCode, socex-&gt;Message);<br \/>\nthrow;<br \/>\n}<br \/>\n}<br \/>\nfinally<br \/>\n{<br \/>\nsocket-&gt;Close();<br \/>\n}<br \/>\narray&lt;SqlServerInfo^&gt;^ aServers = gcnew array&lt;SqlServerInfo^&gt;( servers-&gt;Count );<br \/>\nservers-&gt;CopyTo(aServers);<br \/>\nreturn aServers;<br \/>\n}<br \/>\n};<br \/>\n}<\/p>\n<h3><strong>An example of downloading a combobox:<\/strong><\/h3>\n<p>void DBConnect::loadServerList()<br \/>\n{<br \/>\ncboxServer-&gt;Items-&gt;Clear();<br \/>\narray&lt;SqlServerInfo^&gt;^ lst = Util::SqlServerInfo::Seek();<br \/>\nfor(int i = 0; i &lt; lst-&gt;Length; i++)<br \/>\n{<br \/>\nSqlServerInfo^ name_srv = lst[i];<br \/>\nString^ name = name_srv-&gt;srv_name();<br \/>\nif( !String::IsNullOrEmpty( name ) )<br \/>\n{<br \/>\ncboxServer-&gt;Items-&gt;Add( name );<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>#include &#8220;stdafx.h&#8221; using namespace System; using namespace System::Collections; using namespace System::Collections::Specialized; using namespace System::Net; using namespace System::Net::Sockets; using namespace System::Threading; using namespace System:ata; using namespace System:ata::OleDb; using namespace System::Text; namespace Util { public ref class SqlServerInfo { private : String^ m_ServerName; String^ m_InstanceName; bool\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m_IsClustered; String^ m_Version; int\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0m_tcpPort; String^ m_Np; String^ m_Rpc; IPAddress^ m_IP; StringCollection m_Catalogs;&#8230; <\/p>\n<div class=\"clear\"><\/div>\n<p><a href=\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/\" class=\"gdlr-button small excerpt-read-more\">Read More<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[68,67,757,758],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A list of MS SQL servers to managed C + +<\/title>\n<meta name=\"description\" content=\"This KB includes A list of MSSQL servers to managed C + + and also an example of downloading a combobox\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A list of MS SQL servers to managed C + +\" \/>\n<meta property=\"og:description\" content=\"This KB includes A list of MSSQL servers to managed C + + and also an example of downloading a combobox\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/\" \/>\n<meta property=\"og:site_name\" content=\"ESDS Official Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ESDSdc\/\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-09T11:13:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-10-30T13:52:48+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ESDSDataCenter\" \/>\n<meta name=\"twitter:site\" content=\"@ESDSDataCenter\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"3 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esds.co.in\/kb\/#website\",\"url\":\"https:\/\/www.esds.co.in\/kb\/\",\"name\":\"ESDS Official Knowledgebase\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.esds.co.in\/kb\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/#webpage\",\"url\":\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/\",\"name\":\"A list of MS SQL servers to managed C + +\",\"isPartOf\":{\"@id\":\"https:\/\/www.esds.co.in\/kb\/#website\"},\"datePublished\":\"2010-12-09T11:13:38+00:00\",\"dateModified\":\"2017-10-30T13:52:48+00:00\",\"author\":{\"@id\":\"https:\/\/www.esds.co.in\/kb\/#\/schema\/person\/d951a1b6843822458f3c5f5ee02a74e8\"},\"description\":\"This KB includes A list of MSSQL servers to managed C + + and also an example of downloading a combobox\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esds.co.in\/kb\/\",\"url\":\"https:\/\/www.esds.co.in\/kb\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/\",\"url\":\"https:\/\/www.esds.co.in\/kb\/a-list-of-mssql-servers-to-managed-c\/\",\"name\":\"A list of MS SQL servers to managed C + +\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esds.co.in\/kb\/#\/schema\/person\/d951a1b6843822458f3c5f5ee02a74e8\",\"name\":\"ESDS ADMIN\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.esds.co.in\/kb\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5618393df3c15e5b6b3b9ef917e83827?s=96&d=mm&r=g\",\"caption\":\"ESDS ADMIN\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/posts\/203"}],"collection":[{"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/comments?post=203"}],"version-history":[{"count":12,"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/posts\/203\/revisions"}],"predecessor-version":[{"id":3386,"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/posts\/203\/revisions\/3386"}],"wp:attachment":[{"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/media?parent=203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/categories?post=203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esds.co.in\/kb\/wp-json\/wp\/v2\/tags?post=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}