|  | | 
 
| 
           
             | 
                 
                   | Тема |  Проблем с намиране на локален SQL server   |  |  | Автор | BatiGogo () |  | Публикувано | 02.03.16 18:38 |  |  | 
           
 M$ SQL server 2005. Трябваше ми да намеря на всички сървъри в мрежата. Намерих из НЕТ-а :
 
 
procedure ListAvailableSQLServers(Names : TStrings);
 var
 RSCon: ADORecordsetConstruction;
 Rowset: IRowset;
 SourcesRowset: ISourcesRowset;
 SourcesRecordset: _Recordset;
 SourcesName, SourcesType: TField;
 
 function PtCreateADOObject(const ClassID: TGUID): IUnknown;
 var
 Status: HResult;
 FPUControlWord: Word;
 begin
 asm
 FNSTCW FPUControlWord
 end;
 Status := CoCreateInstance(
 CLASS_Recordset,
 nil,
 CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER,
 IUnknown,
 Result);
 asm
 FNCLEX
 FLDCW FPUControlWord
 end;
 OleCheck(Status);
 end;
 begin
 SourcesRecordset := PtCreateADOObject(CLASS_Recordset) as _Recordset;
 RSCon := SourcesRecordset as ADORecordsetConstruction;
 SourcesRowset := CreateComObject(ProgIDToClassID('SQLOLEDB Enumerator')) as ISourcesRowset;
 OleCheck(SourcesRowset.GetSourcesRowset(nil, IRowset, 0, nil, IUnknown(Rowset)));
 RSCon.Rowset := RowSet;
 with TADODataSet.Create(nil) do
 try
 Recordset := SourcesRecordset;
 SourcesName := FieldByName('SOURCES_NAME'); { do not localize }
 SourcesType := FieldByName('SOURCES_TYPE'); { do not localize }
 Names.BeginUpdate;
 try
 while not EOF do
 begin
 if (SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE) and (SourcesName.AsString <> '') then
 Names.Add(SourcesName.AsString);
 Next;
 end;
 finally
 Names.EndUpdate;
 end;
 finally
 Free;
 end;
 end;
 
 
 Работи си. Всичко ОК.
 Само на единия от компютрите не намира локалния сървър.
 Инфо - един компютър закачен за рутър. На него М$ SQL SERVER 2005. Потребителя е с администраторски права. ВИН 7 - 64.
 Списъка излиза празен. След като въведа ръчно "user\sqlexpress" и го достъпвам без проблем. Windows defender-a ми е изключен. Има Аваст. Забраних го - все тая.FireWall - изключен.
 Същия модул работи без проблем при други клиенти , някои също с ВИН7 64 и аваст. Настройките на сървъра са идентични навсякъде.
 
 Ще бъда благодарен на всякаква помощ.
 
 Компилирано е с делфи - 7.
 
 
 Редактирано от BatiGogo на 02.03.16 18:40. 
 
 |  |  |  
             | 
                 
                   | Тема |  Re: Проблем с намиране на локален SQL server
[re: BatiGogo] |  |  | Автор | NikB (спокоен) |  | Публикувано | 07.03.16 15:46 |  |  | 
           
 Не ми е ясна техниката, която ползваш (не познавам тези ОЛЕ-обекти), но ти предлагам да видиш : MSSQL, освен сървъра запуска и агент.
 SQL managment Studio също не намира автоматично сървъри, ако не е стартиран агента.
 Агента се стартира от SQL server configuration manager.
 (Но, естествено, най-добре е през мениджърите да видиш кой сървър как е стартиран - струва ми се странно да ги енумерираш :))
 
 
 
 
 |  |  |  
             | 
                 
                   | Тема |  Re: Проблем с намиране на локален SQL server  [re: NikB] |  |  | Автор | BatiGogo () |  | Публикувано | 08.03.16 10:53 |  |  | 
           
 Току що сравних с SQL Server Configuration Menager - с друга машина с ВИН7 - 64.
 Всичко е 1:1.
 Лошото е, че при клиента ходи куцо и сакато. И е с администраторски права...Просто такова им беше желанието навремето - да може да се пипа всичко...Хубавото е,че на мен ми се отваря повече работа. Това увеличава финансовите ми постъпления...
 Обикновенно ако нещо е осрано - връщам предишен backup за 10 мин. И съм готов...Но след това трябва да минат всички знаещи, дето са инсталирали това-онова...И работата пак се осира...
 Явно и този път ще стане така. Счетито като си приключи годишните отчети и restore.
 
 
 
 
 |  |  |  |  
 
 |   | 
 |