2007. november 29., csütörtök
Function to determine MS SQL Server Version Number
Problem/Question/Abstract:
How to determine MS SQL Server version number
Answer:
This function gets the connected MS SQL Server version. It returns the version info in 3 OUT parameters.
VerNum : double eg. 7.00623
VerStrShort : string eg. '7.00.623'
VerStrLong : string eg. 'Microsoft SQL Server 7.00 - 7.00.623 (Intel X86) Nov 27 1998 22:20:07 Copyright (c) 1988-1998 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 1)'
I have tested it with MSSQL 7 and MSSQL 2000. I assume it should work for the others. Any feedback and fixes for different versions would be appreciated.
The TQuery parameter that it recieves is a TQuery component that is connected to an open database connection.
procedure GetSqlVersion(Query: TQuery;
out VerNum: double;
out VerStrShort: string;
out VerStrLong: string);
var
sTmp, sValue: string;
i: integer;
begin
// @@Version does not return a Cursor.
// Read the value from the Record Buffer
// Can be used to read all sys functions from MS Sql
sValue := '';
Query.SQL.Text := 'select @@Version';
Query.Open;
SetLength(sValue, Query.RecordSize + 1);
Query.GetCurrentRecord(PChar(sValue));
SetLength(sValue, StrLen(PChar(sValue)));
Query.Close;
if sValue <> '' then
VerStrLong := sValue
else
begin
// Don't know this version
VerStrLong := '?';
VerNum := 0.0;
VerStrShort := '?.?.?.?';
end;
if VerStrLong <> '' then
begin
sTmp := trim(copy(VerStrLong, pos('-', VerStrLong) + 1, 1024));
VerStrShort := copy(sTmp, 1, pos(' ', sTmp) - 1);
sTmp := copy(VerStrShort, 1, pos('.', VerStrShort));
for i := length(sTmp) + 1 to length(VerStrShort) do
begin
if VerStrShort[i] <> '.' then
sTmp := sTmp + VerStrShort[i];
end;
VerNum := StrToFloat(sTmp);
end;
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése