none
如何获取本地sql server的服务器名 RRS feed

  • 问题

  • 我search了很多网页了,仍然没有找到答案。我用NetServerEnum这个函数,获得的都是局域网中的服务器名(包括本机),而且,服务器名和ssms中的服务器名也不同,比如,这个函数获得的本机的服务器名是YANG-PC, 而ssms中的是YANG-PC\yang,而且在连接数据库的时候,后面的对。实在是不理解,给个方法获取本机的sql server 服务器名。谢谢。


    最好再说说怎么获得登录的用户名和密码。thanks very much.
    • 已编辑 神秘人 2011年6月17日 13:33 不全
    • 已移动 Sheng Jiang 蒋晟 2011年6月17日 14:33 (发件人:一般性问题讨论区)
    2011年6月17日 13:29

答案

  • You have named instance, that's way sql name is YANG-PC\yang. Where YANG-PC is machine name and yang is sql instance name, you can get this with 'select @@servername'.
    • 已标记为答案 神秘人 2011年6月20日 1:28
    2011年6月17日 15:05

全部回复

  • You have named instance, that's way sql name is YANG-PC\yang. Where YANG-PC is machine name and yang is sql instance name, you can get this with 'select @@servername'.
    • 已标记为答案 神秘人 2011年6月20日 1:28
    2011年6月17日 15:05
  • thanks very much !

    but i also want to know , which of the machine name list i searched is my machine name. i mean i know which is , but how to tell the code to distinguish them? thanks first.

    2011年6月18日 1:47
  • You have to connect to sql server to run 'select @@servername', so machine name is from the machine where sql service running.
    2011年6月18日 2:09
  • thanks, i just tried the code like below:

     CoInitialize(NULL);

     CString strSql = _T("");
     
     variant_t RecordsAffected;
     strSql.Format(_T("select @@ servername"));
     try
     {

     if (SUCCEEDED(m_pCon.CreateInstance("ADODB.Connection")))
       m_pRec = m_pCon->Execute((_bstr_t)strSql, &RecordsAffected, adExecuteNoRecords);
     }
     catch (_com_error e)
     {
      AfxMessageBox(_T("error"));
     }

    m_pRec.CreateInstance("ADODB.Recordset");

    but it's always "error",  could you help me correct it? now i can use function "gethostname" to get my machine name, so ,next just to get the server name , then combine them is ok? Am i right?

     thanks for your answers.

    2011年6月18日 2:32
  • i mean get the server name use vc++ code and before connecting to the sql server. 'select @@servername' can get the server name after connecting. That's my question:how to get the server name before connecting to the server not after.

    thanks.

    2011年6月18日 3:00
  • 'SQLCMD -L' can list live sql instances on your network.

    2011年6月18日 3:38