środa, 28 października 2009

Funckcja sprawdczająca czy podana nazwa bazy jest zainstalowana na serwerze MSSQL

Funkcja działa poprawnie na serwerze MS-SQL 2000 i nowszym, przy czym parametr nWersja jest oznaczeniem wersji MS-SQL, dla 2000 nWersja = 80, 2005 nWersja=90/91/92/93

function BOOL DoesDatabaseExist(svServerName, svDatabaseName, svDriver, svUserName, svUserPassword, nWersja)
OBJECT pADOConnObj, pADORecordSetObj;
STRING szADOConnObjID, szADORecordSetObjID, szConnString, szSQL;
BOOL bExists;
begin
bExists = FALSE;
// Create ADO Connection Object to connect to the SQL server
szADOConnObjID = "ADODB.Connection";
set pADOConnObj = CreateObject(szADOConnObjID);

// Create the SQL string to complete the connection
szConnString = "driver={" + svDriver + "};";
szConnString = szConnString + "server=" + svServerName + ";";
szConnString = szConnString + "uid=" + svUserName + ";";
szConnString = szConnString + "pwd=" + svUserPassword + ";";
szConnString = szConnString + "database=master";

// Open the ADO Connection
pADOConnObj.Open(szConnString);

// Create ADO Recordset object for the return
szADORecordSetObjID = "ADODB.Recordset";
set pADORecordSetObj = CreateObject(szADORecordSetObjID);

// Set some ADO Recordset properties
pADORecordSetObj.CursorType = 3;
pADORecordSetObj.ActiveConnection = pADOConnObj;

// Create the SQL string to retrieve the database if it exists
if (nWersja=80) then
szSQL = "Select name from sysdatabases where name='" + svDatabaseName + "'";
elseif (nWersja>=90) then
szSQL = "Select name from sys.databases where name='" + svDatabaseName + "'";
endif;

// Use the recordset to see if the database exists
pADORecordSetObj.Open(szSQL);
if (pADORecordSetObj.RecordCount = 1) then
bExists = TRUE;
endif;

set pADOConnObj = NOTHING;
return bExists;
end;

Brak komentarzy:

Prześlij komentarz