如何在程序中获取本机(或局域网中)的SQL Server服务器名称

原帖地址:http://faq.csdn.net/read/210867.html

代码如下:(对在线的局域网上的SQL服务器)
   char a[64],tempchar[64];
   CString str;
   PSERVER_INFO_100 pBuf;
   PSERVER_INFO_100 pTmpBuf;
   DWORD dwLevel = 100;
   DWORD dwPrefMaxLen = -1;
   DWORD dwEntriesRead = 0;
   DWORD dwTotalEntries = 0;
   DWORD dwTotalCount = 0;
   DWORD dwServerType = SV_TYPE_SQLSERVER; 
   DWORD dwResumeHandle = 0;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;
   DWORD i;
   nStatus = NetServerEnum(NULL,
                           dwLevel,
                           (LPBYTE *) &pBuf,
                           dwPrefMaxLen,
                           &dwEntriesRead,
                           &dwTotalEntries,
                           dwServerType,
                           NULL,
                           &dwResumeHandle);
   if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
   {
      if ((pTmpBuf = pBuf) != NULL)
      {
         for (i = 0; i < dwEntriesRead; i++)
         {

            if (pTmpBuf == NULL)
            {
               fprintf(stderr, "An access violation has occurred/n");
               break;
            }
            int leng = lstrlenW((unsigned short*)pTmpBuf->sv100_name)*2;
if (leng>0)
RtlMoveMemory(a,pTmpBuf->sv100_name,leng);
memset(tempchar,0,64);
WideCharToMultiByte( 0, 0, (unsigned short*)a, -1, tempchar, leng/2, NULL, NULL );
str+=tempchar;
            pTmpBuf++;
            dwTotalCount++;
         }

         if (nStatus == ERROR_MORE_DATA)
         {
            fprintf(stderr, "/nMore entries available!!!/n");
            fprintf(stderr, "Total entries: %d", dwTotalEntries);
         }

         printf("/nEntries enumerated: %d/n", dwTotalCount);
      }
   }
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值