2010-10-13 88 views
14

在我的应用程序中,用户可以从网络中的SQL Server列表中选择。问题是我需要知道所选的实例是本地还是远程计算机。如何判断SQL Server是本地还是远程?

有没有一种方法,我可以问SQL实例她在什么电脑上?有一种方法可以弄清楚吗?

EDIT1:我想知道在哪里的SQL服务器托管,所以我就可以比较,为System.Environment.MachineName和肯定知道主机名是SQL Server在同一台机器上运行在我的应用程序正在运行

EDIT2:@@servername回到我的计算机名\ SQLINSTANCE而SELECT SERVERPROPERTY('MachineName')只返回计算机名,而这正是我想要的

回答

11

使用@@Servername,例如:

SELECT @@servername 

或者你可以这样做

SELECT SERVERPROPERTY('MachineName') 

从MSDN上,这些方法之间的区别:

的 SERVERPROPERTY功能和 @@ SERVERNAME的ServerName属性返回类似 信息。 ServerName属性 提供Windows服务器和 实例名称,共同组成 唯一服务器实例。 @@ SERVERNAME提供当前配置的本地服务器名称 。

如果在安装时默认的服务器名称 没有 被更改ServerName属性和 @@ SERVERNAME返回相同的 信息。

如果本地服务器名称已 在安装时从默认的服务器名称 改变,@@ SERVERNAME 返回新名称。

+0

所以@@服务器名是.. 。谢谢 – sebagomez 2010-10-13 15:34:57

+1

我无法理解 - 你如何从返回的名字中找出它是本地的还是远程的? – 2010-10-14 13:24:13

+0

@ vgv8 - 您将它与本地机器的名称进行比较。 – JohnFx 2010-10-14 13:39:29

-1

sp_who2返回主机名

+0

这将是与登录用户关联的名称,而不是SQL实例。 – JohnFx 2010-10-13 15:35:32

+0

道歉 - 我想我误解了这个问题,第二段是误导性的“有没有一种方法可以问SQL实例他在哪台计算机上?”他在哪里=用户。 – 2010-10-13 15:38:18

3

你真的对所有SQL Server实例(S)登录权限?如果是这样,您可以执行 sp_helpserver @@ servername并比较返回的名称与 Environment.MachineName

如果您还没有登录访问,你可以写一个小C#控制台程序返回本地网络上的每一个SQL Server实例的服务器名称:

using System; 
using System.Data.Sql; 

class Program 
{ 
    static void Main() 
    { 
     // Retrieve the enumerator instance and then the data. 
     SqlDataSourceEnumerator instance = 
     SqlDataSourceEnumerator.Instance; 
     System.Data.DataTable table = instance.GetDataSources(); 

     // Display the contents of the table. 
     // The first column is the server name. 
     DisplayData(table); 
     Console.WriteLine("Press any key to continue."); 
     Console.ReadKey(); 
    } 

    private static void DisplayData(System.Data.DataTable table) 
    { 
     foreach (System.Data.DataRow row in table.Rows) 
     { 
      foreach (System.Data.DataColumn col in table.Columns) 
      { 
        Console.WriteLine("{0} = {1}", col.ColumnName, row[col]); 
      } 
     Console.WriteLine("============================"); 
     } 
    } 
} 
相关问题