Как определить установленные экземпляры SQL Server и их версии? - PullRequest
211 голосов
/ 26 сентября 2008

Я пытаюсь определить, какие экземпляры sql server / sql express я установил (вручную или программно), но все примеры подсказывают мне выполнить запрос SQL, чтобы определить, что предполагает, что я уже подключен конкретный экземпляр.

Ответы [ 18 ]

191 голосов
/ 26 сентября 2008

В командной строке:

SQLCMD -L

или

OSQL -L

(Примечание: должна быть заглавная буква L)

Будет выведен список всех серверов sql, установленных в вашей сети. Существуют параметры конфигурации, которые можно настроить для предотвращения отображения SQL Server в списке. Для этого ...

В командной строке:

svrnetcn

В списке включенных протоколов выберите «TCP / IP», затем нажмите «Свойства». Есть флажок «Скрыть сервер».

79 голосов
/ 26 сентября 2008

Вы можете запросить это значение реестра, чтобы получить версию SQL напрямую:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup\CurrentVersion

В качестве альтернативы вы можете запросить имя вашего экземпляра и затем использовать sqlcmd с вашим именем экземпляра, которое вы хотели бы:

Чтобы увидеть имя вашего экземпляра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names

Затем выполните это:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

Если вы используете C ++, вы можете использовать этот код для получения информации реестра.

72 голосов
/ 26 сентября 2008

Все установленные экземпляры должны отображаться в оснастке служб в консоли управления Microsoft. Чтобы получить имена экземпляров, перейдите в Пуск | Запустить | введите Services.msc и найдите все записи с «Sql Server (имя экземпляра)».

44 голосов
/ 27 февраля 2012

- запрос T-SQL для поиска списка экземпляров, установленных на компьютере

DECLARE @GetInstances TABLE
( Value nvarchar(100),
 InstanceNames nvarchar(100),
 Data nvarchar(100))

Insert into @GetInstances
EXECUTE xp_regread
  @rootkey = 'HKEY_LOCAL_MACHINE',
  @key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
  @value_name = 'InstalledInstances'

Select InstanceNames from @GetInstances 
11 голосов
/ 27 сентября 2008

Если вы просто хотите посмотреть, что установлено на компьютере, на котором вы в данный момент вошли, я думаю, что самый простой ручной процесс - это просто открыть диспетчер конфигурации SQL Server (из меню «Пуск»), который отображает все SQL Службы (и только службы SQL) на этом оборудовании (работают или нет). Это предполагает SQL Server 2005 или выше; dotnetengineer рекомендация использовать консоль управления службами покажет вам все службы и должна быть всегда доступна (например, если вы используете более ранние версии SQL Server).

Однако, если вы ищете более широкий процесс обнаружения, вы можете рассмотреть возможность использования сторонних инструментов, таких как SQLRecon и SQLPing, которые будут сканировать вашу сеть и создавать отчет обо всех экземплярах службы SQL, найденных на любом сервере, на котором они установлены. доступ. Прошло много времени с тех пор, как я использовал подобные инструменты, но я был удивлен тем, что они нашли (а именно, горсткой случаев, о которых я не знал, что они существовали). YMMV. Вы можете Google для деталей, но я считаю, что эта страница имеет соответствующие загрузки: http://www.sqlsecurity.com/Tools/FreeTools/tabid/65/Default.aspx

10 голосов
/ 15 ноября 2016

Я знаю, что эта ветка немного старая, но я натолкнулся на эту ветку, прежде чем нашел ответ, который искал, и подумал, что поделюсь. Если вы используете SQLExpress (или localdb), существует более простой способ найти имена ваших экземпляров. В командной строке введите:

> sqllocaldb i

В этом списке будут перечислены имена экземпляров, которые вы установили локально. Таким образом, ваше полное имя сервера должно включать (localdb) \ перед именем экземпляра для подключения. Кроме того, sqllocaldb позволяет создавать новые экземпляры или удалять их, а также настраивать их. См .: SqlLocalDB Utility .

6 голосов
/ 22 марта 2012

SQL Server позволяет приложениям находить экземпляры SQL Server в текущей сети. Класс SqlDataSourceEnumerator предоставляет эту информацию разработчику приложения, предоставляя DataTable, содержащий информацию обо всех видимых серверах. Эта возвращенная таблица содержит список доступных в сети экземпляров серверов, который соответствует списку, предоставленному при попытке пользователя создать новое соединение, и раскрывает раскрывающийся список, содержащий все доступные серверы в диалоговом окне «Свойства соединения». Отображаемые результаты не всегда полны. Чтобы получить таблицу, содержащую информацию о доступных экземплярах SQL Server, сначала необходимо получить перечислитель, используя свойство общего / статического экземпляра:

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.
    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("============================");
    }
  }
}

из MSDN http://msdn.microsoft.com/en-us/library/a6t1z9x2(v=vs.80).aspx

5 голосов
/ 26 сентября 2008

Служба браузера SQL Server http://msdn.microsoft.com/en-us/library/ms181087.aspx

5 голосов
/ 07 октября 2013

В командной строке Windows введите:

SC \\server_name query | find /I "SQL Server ("

Где "имя_сервера" - это имя любого удаленного сервера, на котором вы хотите отобразить экземпляры SQL.

Это требует достаточных разрешений, конечно.

4 голосов
/ 21 июня 2011

Если вы заинтересованы в определении этого в сценарии, вы можете попробовать следующее:

sc \\server_name query | grep MSSQL

Примечание: grep является частью инструментов gnuwin32

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...