代码之家  ›  专栏  ›  技术社区  ›  sebagomez

如何判断SQL Server是本地的还是远程的?

  •  14
  • sebagomez  · 技术社区  · 16 年前

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

    有没有办法问那个SQL实例她在哪台计算机上?a有办法解决这个问题吗?

    编辑1: System.Environment.MachineName 并且确定Sql Server运行在运行我的应用程序的同一台计算机上

    编辑2: @@servername 在 SELECT SERVERPROPERTY('MachineName') 只返回计算机名,这正是我想要的

    3 回复  |  直到 15 年前
        1
  •  12
  •   JohnFx    16 年前

    使用 @@Servername

    SELECT @@servername
    

    或者你也可以这样做

    SELECT SERVERPROPERTY('MachineName') 
    

    从MSDN了解这些方法之间的差异:

    提供Windows服务器和 一起构成的实例名 唯一的服务器实例。 已配置本地服务器名称。

    ServerName属性和 @@服务器名返回相同 默认服务器名的信息 在安装时还没有 已经改变了。

    从默认服务器名更改 在安装时,@“服务器名” 返回新名称。

        2
  •  3
  •   HTTP 410    16 年前

    您是否对所有SQL Server实例都具有登录权限?如果你能执行 或 @@服务器名 环境.MachineName .

    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("============================");
            }
        }
    }
    
        3
  •  -1
  •   m.edmondson    16 年前