czwartek, 28 października 2010

Odczyt wersji zdalnego serwera SQL InstallShield

Funkcja odczytuje wersję serwera SQL. Wymaganiem jest podanie użytkownika z dostępem do bazy master serwera.
Parametry:
-sServerName - nazwa serwera zdalnego (z instancją)
-sUserName - nazwa użytkownika
-sUserPwd - hasło użytkownika
- bLog - zapis do pliku log
Wartości zwracane:
-1 - nie udało się pobrać wersji serwera
80 - SQL2000
90 - SQL2005
100 -SQL2008

function int GetRemoteSQLVersion(sServerName, sUserName, sUserPwd,  bLog)
OBJECT objConn, objRST;      
STRING sConnString;  
STRING  szADOConnObjID;
STRING sSQL,szVersion, szVer;
int nResult;
begin
 nResult = -1;

     sConnString = "Driver={SQL Server};Persist Security Info=False;";
     sConnString = sConnString + "server=" + sServerName + ";";
  sConnString = sConnString + "uid=" + sUserName + ";";                                                       
  sConnString = sConnString + "pwd=" + sUserPwd + ";";
  sConnString = sConnString + "database=master"; 
 
  sSQL = "SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion";
 try
  if (bLog) then WriteLog(0,"* Odczyt wersji Serwera SQL..."); endif;
  
  szADOConnObjID = "ADODB.Connection";
     set objConn = CreateObject(szADOConnObjID);         
    
  if (IsObject(objConn)) then 
   objConn.ConnectionString = sConnString;
   //objConn.CommandTimeout = 999999;   
   objConn.Open;                            
         set objRST = objConn.Execute(sSQL);                    
   szVersion = objRST("ProductVersion");   
         if (StrLength(szVersion)>0) then
          StrSub(szVer,szVersion,0,StrFind(szVersion,"."));                    
          switch (szVer)
            case "8" : nResult=80; if (bLog) then WriteLog(1,"- Serwera SQL 2000"); endif;
            case "9" : nResult=90; if (bLog) then WriteLog(1,"- Serwera SQL 2005"); endif;
            case "10": nResult=100;if (bLog) then WriteLog(1,"- Serwera SQL 2008"); endif;
          endswitch;                   
         endif;         
         objConn.Close;         
  endif;
  
  set objConn = NOTHING;    
  set objRST  = NOTHING;
  
 catch  
  if (bLog) then WriteLog(1," - Nie można uzyskać połączenia z bazą master na 
użytkownika \""+sUserName+"\""); endif;    
 endcatch;
 
 return nResult; 
end;

Brak komentarzy:

Prześlij komentarz