czwartek, 29 października 2009

Ustawienie stałego portu dla wybranej instancji serwera MSSQL 2005

Funkcja pobiera dynamicznie ustawiony Port przez serwer SQL i przypisuje go jako stały

function BOOL SetFixedPortMS(sInstancja,sPort,bLog)
string sKey,sValue,sData,sKatInstancji;
number nResult,nResult1,nResult2,nType,nSize;
BOOL bSET;
begin                      
  Disable(LOGGING);
  bSET=FALSE;
  RegDBSetDefaultRoot( HKEY_LOCAL_MACHINE );  
  sKey="Software\\Microsoft\\Microsoft SQL Server\\"+sInstancja+"\\Setup";
  nType = REGDB_STRING_MULTI;
  nSize = 255;
  if (RegDBKeyExist(sKey)=1) then
     sValue = "SQLPath";
     nResult = RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize );    
     sKatInstancji = GetWord("" ^ sData,0); 
     sPort = GetDynamicPort(sInstancja,bLog);                              //Pobierz dynamiczny Port
     if (bLog) then WriteLog(1,"Ustawienie stałego portu TCP na nr : "+sPort);  endif;
     sKey = "Software\\Microsoft\\Microsoft SQL Server\\"+sKatInstancji+"\\MSSQLServer\\SuperSocketNetLib\\Tcp\\IPAll";    
     if (RegDBKeyExist(sKey)=1) then
        sValue = "TcpPort";       
        nResult = RegDBSetKeyValueEx ( sKey, sValue, nType, sPort, nSize );       
        sValue = "TcpDynamicPorts";
        nResult1 = RegDBSetKeyValueEx ( sKey, sValue, nType, "", nSize );               
     else                           
        if (bLog) then WriteLog(2,"- nie ustawiono. Brak klucza TCP przy katalogu instancji");    endif;
        bSET = FALSE;  //Nieznaleziono wpisu o kluczu TCP/IP
     endif;  
     //Ustawienie dla pozostalych TCP portow stalych
     sKey = "Software\\Microsoft\\Microsoft SQL Server\\"+sKatInstancji+"\\MSSQLServer\\SuperSocketNetLib\\Tcp\\IP1";    
     if (RegDBKeyExist(sKey)=1) then
        sValue = "TcpPort";              
        RegDBSetKeyValueEx ( sKey, sValue, nType, sPort, nSize );       
        sValue = "TcpDynamicPorts";       
        RegDBSetKeyValueEx ( sKey, sValue, nType, "", nSize );               
     endif;
    
     sKey = "Software\\Microsoft\\Microsoft SQL Server\\"+sKatInstancji+"\\MSSQLServer\\SuperSocketNetLib\\Tcp\\IP2";    
     if (RegDBKeyExist(sKey)=1) then
        sValue = "TcpPort";               
        RegDBSetKeyValueEx ( sKey, sValue, nType, sPort, nSize );       
        sValue = "TcpDynamicPorts";       
        RegDBSetKeyValueEx ( sKey, sValue, nType, "", nSize );               
     endif;
    
     sKey = "Software\\Microsoft\\Microsoft SQL Server\\"+sInstancja+"\\MSSQLServer\\SuperSocketNetLib\\Tcp";    
     if (RegDBKeyExist(sKey)=1) then
        sValue = "TcpPort";        
        nResult2 = RegDBSetKeyValueEx ( sKey, sValue, nType, sPort, nSize );       
     else
        if (bLog) then WriteLog(2,"- nie ustawiono stałego portu. Brak klucza rejestru TCP przy instancji");    endif;
        bSET = FALSE;  //Nieznaleziono wpisu o kluczu TCP/IP
     endif;                                                       
    
     if (nResult=0)&&(nResult1=0)&&(nResult2=0) then
        if (bLog) then WriteLog(2,"- ustawiono stały port na : "+sPort);    endif;
        bSET = TRUE;
     else
       if (bLog) then WriteLog(2,"- wystąpił błąd przy ustawieniu stałego port na : "+sPort);    endif; 
     endif;
    
  else                                
      if (bLog) then WriteLog(2,"- nie ustawiono stałego portu. Brak wpisu o instancji");      endif;
      bSET = FALSE;  //Nieznalezniono wpisu o zainstalowanej Instancji
  endif;                                                                
                  
 Enable(LOGGING);                 
 return bSET;
end;

Brak komentarzy:

Prześlij komentarz