Проверка установки SQL Server
С помощью отчета об обнаружении SQL Server можно проверить, какая версия SQL Server и какие компоненты SQL Server установлены на компьютере. В отчете Об обнаружении установленных компонентов SQL Server отображается отчет обо всех SQL Server 2000 (8.x), SQL Server 2005 (9.x), SQL Server 2008 (10.0.x), SQL Server 2008 R2 (10.50.x), SQL Server 2012 (11.x), продукты и компоненты SQL Server 2014 (12.x), SQL Server 2016 (13.x) и SQL Server 2017 (14.x), установленные на локальном сервере. Отчет об обнаружении компонентов SQL Server доступен на странице Средства в центре установки SQL Server .
Запуск отчета об обнаруженных компонентах SQL Server
Запустите центр установки SQL Server, для этого в меню Пуск выберите Все программы, Microsoft SQL Server , Средства настройки и Центр установки SQL Server. Чтобы запустить отчет об обнаружении компонентов SQL Server, щелкните Средства в левой области навигации центра установки SQL Server и выберите Установленный отчет об обнаружении компонентов SQL Server .
Отчет об обнаружении SQL Server сохраняется в папке %ProgramFiles%\Microsoft SQL Server\nnn\Setup Bootstrap\Log\.
Его создание можно запустить из командной строки. Выполните команду Setup.exe /Action=RunDiscovery. Если в командную строку добавить параметр /q, то пользовательский интерфейс не отображается, но отчет будет создан в каталоге %ProgramFiles%\Microsoft SQL Server\nnn\Setup Bootstrap\Log\.
Как узнать версию установленного SQL сервера?
Есть 2 основных ситуации при получении версии Microsft SQL Server:
- У вас есть возможность подключиться к серверу (через SSMS, sqlcmd или любой другой клиент)
- У вас нет возможности подключиться к серверу, но есть доступ к серверу Windows (или Linux если это SQL Server 2017)
Рассмотрим сначала первый вариант. Большая часть информации доступна и поддерживается в актуальном виде в отличной и крайне рекомендуемой к прочтению KB321185: Определение версии, выпуска и уровня обновления системы SQL Server и ее компонентов
- Подключитесь к серверу через SSMS. После подключения в обозревателе объектов в нем будут отображаться сведения о выпуске (в скобках), наряду с именем пользователя, которое используется для подключения к конкретному экземпляру SQL Server.
- С помощью запроса: SELECT @@VERSION; . Пример вывода для последней на текущий момент версии SQL Server 2016 SP1 CU4 (подробнее о версиях и обновлениях SQL Server можно прочитать здесь):
Microsoft SQL Server 2016 (SP1-CU4) (KB4024305) – 13.0.4446.0 (X64) Jul 16 2017 18:08:49 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows …
SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion , SERVERPROPERTY('ProductLevel') AS ProductLevel , SERVERPROPERTY('Edition') AS Edition;
SELECT SERVERPROPERTY('MachineName') AS [MachineName] , SERVERPROPERTY('ServerName') AS [ServerName] , SERVERPROPERTY('InstanceName') AS [Instance] , SERVERPROPERTY('IsClustered') AS [IsClustered] , SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS [ComputerNamePhysicalNetBIOS] , SERVERPROPERTY('Edition') AS [Edition] , SERVERPROPERTY('ProductLevel') AS [ProductLevel] -- What servicing branch (RTM/SP/CU) , SERVERPROPERTY('ProductUpdateLevel') AS [ProductUpdateLevel] -- Within a servicing branch, what CU# is applied , SERVERPROPERTY('ProductVersion') AS [ProductVersion] , SERVERPROPERTY('ProductMajorVersion') AS [ProductMajorVersion] , SERVERPROPERTY('ProductMinorVersion') AS [ProductMinorVersion] , SERVERPROPERTY('ProductBuild') AS [ProductBuild] , SERVERPROPERTY('ProductBuildType') AS [ProductBuildType] -- Is this a GDR or OD hotfix (NULL if on a CU build) , SERVERPROPERTY('ProductUpdateReference') AS [ProductUpdateReference] -- KB article number that is applicable for this build , SERVERPROPERTY('ProcessID') AS [ProcessID] , SERVERPROPERTY('Collation') AS [Collation] , SERVERPROPERTY('IsFullTextInstalled') AS [IsFullTextInstalled] , SERVERPROPERTY('IsIntegratedSecurityOnly') AS [IsIntegratedSecurityOnly] , SERVERPROPERTY('FilestreamConfiguredLevel') AS [FilestreamConfiguredLevel] , SERVERPROPERTY('IsHadrEnabled') AS [IsHadrEnabled] , SERVERPROPERTY('HadrManagerStatus') AS [HadrManagerStatus] , SERVERPROPERTY('InstanceDefaultDataPath') AS [InstanceDefaultDataPath] , SERVERPROPERTY('InstanceDefaultLogPath') AS [InstanceDefaultLogPath] , SERVERPROPERTY('BuildClrVersion') AS [Build CLR Version] , SERVERPROPERTY('IsXTPSupported') AS [IsXTPSupported] , SERVERPROPERTY('IsPolybaseInstalled') AS [IsPolybaseInstalled] -- New for SQL Server 2016 , SERVERPROPERTY('IsAdvancedAnalyticsInstalled') AS [IsRServicesInstalled] -- New for SQL Server 2016 ;
Теперь рассмотрим способы узнать версию для второго варианта когда у вас нет возможности (или прав) подключится к SQL Server:
- \MSSQL\Binn\sqlservr.exe -v [-s InstanceName]
Если на сервере установлен только один инстанс SQL Server, то -s не нужен:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn>sqlservr.exe -v
В противном случае необходимо указать название интересующего инстанса, например:
C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\Binn>sqlservr.exe -v -s SQLEXPRESS2014
- Если операционная система Windows, то можно проверить ветку реестра:
Key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\Tools\Setup Name: Edition
В командной строке cmd:
REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\\Tools\Setup" /v /e /f Edition
- Через скрипт Powershell:
$inst = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances foreach ($i in $inst)
как проверить установлен ли SQL?

Добрый всем день! Нужно проверить установлен ли ранее SQL Server. Нашел вот такую API-шную функцию(подсказали) — NetServerGetInfo(), но вот затруднения у меня в синтаксисе. Не знаю как оформить проверку. Может кто-нибудь сталкивался?
#2
resvit
Отправлено 13 марта 2009 — 14:18
Добрый всем день! Нужно проверить установлен ли ранее SQL Server. Нашел вот такую API-шную функцию(подсказали) — NetServerGetInfo(), но вот затруднения у меня в синтаксисе. Не знаю как оформить проверку. Может кто-нибудь сталкивался?
Есть даже кусок кода выполняющего нужную проверку на C#. Помогите перевести это на JSCript, если не затруднит особо.
case 119: // Is SQL Server Installed. < lResult=FALSE; NET_API_STATUS Status=NERR_Success; PSERVER_INFO_101 pServerInfo=NULL; Status=NetServerGetInfo(NULL,101,(LPBYTE*)&pServerInfo); if (Status!=NERR_Success) break; if (pServerInfo->sv101_type & SV_TYPE_SQLSERVER) lResult=TRUE; > break;
#3
Pryanik



- Город: МОСКВА
Отправлено 13 марта 2009 — 14:20
Добрый всем день! Нужно проверить установлен ли ранее SQL Server. Нашел вот такую API-шную функцию(подсказали) — NetServerGetInfo(), но вот затруднения у меня в синтаксисе. Не знаю как оформить проверку. Может кто-нибудь сталкивался?
Нашел погуглив примерчик, думаю с ним разберетесь, только функция другая:
Использовать SQLBrowseConnect api являющимся частью ODBC api
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;
var
Form1: TForm1;
const
// Property TNTServerInfo.ServerType Mask of following values
SV_TYPE_UNKNOWN = 0;
SV_TYPE_WORKSTATION = $00000001;
SV_TYPE_SERVER = $00000002;
SV_TYPE_SQLSERVER = $00000004;
SV_TYPE_DOMAIN_CTRL = $00000008;
SV_TYPE_DOMAIN_BAKCTRL = $00000010;
SV_TYPE_TIME_SOURCE = $00000020;
SV_TYPE_AFP = $00000040;
SV_TYPE_NOVELL = $00000080;
SV_TYPE_DOMAIN_MEMBER = $00000100;
SV_TYPE_PRINTQ_SERVER = $00000200;
SV_TYPE_DIALIN_SERVER = $00000400;
SV_TYPE_SERVER_UNIX = $00000800;
SV_TYPE_NT = $00001000;
SV_TYPE_WFW = $00002000;
SV_TYPE_SERVER_MFPN = $00004000;
SV_TYPE_SERVER_NT = $00008000;
SV_TYPE_POTENTIAL_BROWSER = $00010000;
SV_TYPE_BACKUP_BROWSER = $00020000;
SV_TYPE_MASTER_BROWSER = $00040000;
SV_TYPE_DOMAIN_MASTER = $00080000;
SV_TYPE_SERVER_OSF = $00100000;
SV_TYPE_SERVER_VMS = $00200000;
SV_TYPE_WINDOWS = $00400000;
SV_TYPE_DFS = $00800000;
SV_TYPE_ALTERNATE_XPORT = $20000000;
SV_TYPE_LOCAL_LIST_ONLY = $40000000;
SV_TYPE_DOMAIN_ENUM = $80000000;
SV_TYPE_ALL = $FFFFFFFF;
type
PServerInfo101 = ^TServerInfo101;
_SERVER_INFO_101 = record
sv101_platform_id: DWORD;
sv101_name: LPWSTR;
sv101_version_major: DWORD;
sv101_version_minor: DWORD;
sv101_type: DWORD;
sv101_comment: LPWSTR;
end;
TServerInfo101 = _SERVER_INFO_101;
function NetServerEnum(servername: LPCWSTR; level: DWORD; var bufptr: Pointer;
prefmaxlen: Integer; var entriesread: DWORD; var totalentries: DWORD;
servertype: DWORD; domain: LPCWSTR; var resume_handle: DWORD): DWORD;
stdcall; external ‘netapi32.dll’ name ‘NetServerEnum’;
procedure ListSQLServers( aList: TStrings );
var
i,E,ResumeHandle,
TotalEntries,EntriesRead : DWORD;
pServerBuffer : pointer;
pIncBuff : PServerInfo101;
begin
pServerBuffer := nil;
ResumeHandle := 0;
E := NetServerEnum( nil, 101, pServerBuffer, -1, EntriesRead, TotalEntries,
SV_TYPE_SQLSERVER, nil, ResumeHandle);
if E = 0 then
begin
aList.Clear;
pIncBuff := pServerBuffer;
for i := 1 to EntriesRead do
begin
aList.Add( WideCharToString( pIncBuff.sv101_name) );
inc(pIncBuff);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListSQLServers( Memo1.Lines );
end;
end.
2. — SQL-Ping, использум сокеты
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Winsock, StdCtrls, ScktComp;
Const
CM_SocketCallBack = WM_App + 600;
type
TClearSocketThread = class(TThread)
private
waitTime:Integer;
socket:Integer;
protected
procedure Execute; override;
public
constructor Create(s,w:Integer);
end;
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
Procedure CMSocketCallBack(Var Msg: TMessage); Message CM_SocketCallBack;
public
s:Integer;
end;
var
Form1: TForm1;
constructor TClearSocketThread.Create(s,w:Integer);
begin
Socket:=s;
waitTime:=w;
FreeOnTerminate:=true;
inherited create(false);
end;
procedure TClearSocketThread.Execute;
begin
sleep(waitTime);
closesocket(Socket);
WSACleanup;
windows.beep(4000,100);
end;
Procedure TForm1.CMSocketCallBack(Var Msg: TMessage);
var
buffer:array [0..64000] of char;
str:String;
n:Integer;
begin
fillchar(buffer,64000,0);
recv(s,buffer,sizeof(buffer),0);
str:=»;
for n:=3 to 64000 do begin
if buffer[n]=’;’ then begin
Listbox1.Items.Add(str);
str:=»;
continue;
end;
if buffer[n]=#0 then begin
Listbox1.Items.Add(str);
break;
end;
str:=str+buffer[n];
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
Address=’255.255.255.255′;
var
wsa_data:WSADATA;
SNDBUF:Integer;
TCPNODELAY:Integer;
BROADCAST:integer;
hostaddr: sockaddr_in;
buf:char;
begin
Listbox1.items.clear;
WSAStartup(2,wsa_data);
//create a socket
s:=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
//declare call back routine
WSAAsyncSelect(s,self.Handle,CM_SocketCallBack,FD_READ);
//setup
SNDBUF:=0;
TCPNODELAY:=1;
BROADCAST:=1;
setsockopt(s,SOL_SOCKET,SO_SNDBUF,PChar(@SNDBUF),sizeof(SNDBUF));
setsockopt(s,SOL_SOCKET,TCP_NODELAY,PChar(@TCPNODELAY),sizeof(TCPNODELAY));
setsockopt(s,SOL_SOCKET,SO_BROADCAST,PChar(@BROADCAST),sizeof(BROADCAST));
hostaddr.sin_family :=AF_INET;
hostaddr.sin_port :=htons(1434);
hostaddr.sin_addr.s_addr:=inet_addr(PChar(Address));
buf:=#02; //ping
//ask all maschines
sendto(s,buf,1,0,hostaddr,sizeof(hostaddr));
TClearSocketThread.Create(s,5000);
end;
3. Используя SQL-DMO. Требует установленного com\ole объекта в системе -SQLDMO.SQLServer
function EnumSqlServers(AStrings : TStrings) : boolean;
var oDmo,oApp,oServers : OleVariant;
bResult : boolean;
i : integer;
begin
AStrings.Clear;
try
oDMO := CreateOleObject(‘SQLDMO.SQLServer’);
oApp := oDMO.Application;
oServers := oApp.ListAvailableSQLServers;
try
AStrings.BeginUpdate;
for i := 1 to oServers.Count do
AStrings.Add(oServers.Item(i));
finally
AStrings.EndUpdate;
end;
bResult := true;
except
bResult := false;
end;
oServers := Unassigned;
oApp := Unassigned;
oDMO := Unassigned;
Result := bResult;
end;
Руководство по установке и администрированию Symantec Endpoint Protection (14.3 RU1 MP1) — Russian - Russian Federation
Сервер управления и база данных не всегда правильно обмениваются информацией. Необходимо удостовериться, что база данных запущена, а затем проверить соединение между ней и сервером.
Проверка подключения базы данных
Тип базы данных
Выполните следующие действия
База данных Microsoft SQL Server Express (начиная с версии 14.3 RU1)
Убедитесь в том, что служба SQL Server Express работает и процесс sqlserver.exe прослушивает TCP на порте 2638.
Проверьте соединение ODBC.
Встроенная база данных Sybase (14.3 MP1 и более ранние версии)
Удостоверьтесь, что служба встроенной базы данных Symantec запущена, а процесс dbsrv9.exe ожидает получения запросов через порт TCP 2638.
Проверьте соединение ODBC.
Удаленная база данных Microsoft SQL Server
Удостоверьтесь, что при установке и настройке Symantec Endpoint Protection Manager указан именованный экземпляр.
Удостоверьтесь, что сервер SQL запущен и правильно настроен.
Удостоверьтесь, что сетевое соединение между сервером управления и базой данных SQL установлено правильно.
