SQL-DMO Özellikleri:
1-)SQL-DMO,SQL Server 2000 Enterprise Manager tarafından kullanılan bir APIdir.Bundan dolayı herhangi bir uygulama SQL-DMO'yu kullanarak SQL Server 2000 Enterprise Manager'in sahip olduğu tüm fonksiyonları gerçekleştirebilir.
2-)SQL-DMO,bir SQL Server veritabanına bağlanmak için ODBC driver (versiyon 3.80 yada daha yukarısı) kullanır.
3-)SQL-DMO,bir bilgisayarda yüklü herhangi bir SQL Server instance'da bulunan sp'leri destekler.
4-)SQL-DMO komponentleri/nesneleri/fonksiyonları sqldmo.dll dosyasında tanımlanmıştır.Bu dll dosyasını,Delphi ortamında kullanabilmek için ektra dosya yada işlemlere gerek yoktur;SQL Server 2000, kurulum sırasında import eder.Sadece SQL-DMO header dosyası(SQLDMO_TLB) Delphi'de oluşturulmalıdır.
sqldmo.dll dosyası ,SQL Server'ün yüklü olduğu dizinde Bin klasöründe bulunmaktadır.Dosyanın konumu:
"C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll" .
Type Lib: C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll
LIBID: {10010001-E260-11CF-AE68-00AA004A34D5}
LCID: 0
Helpfile: C:\Program Files\Microsoft SQL Server\80\Tools\Binn\SQLDMO80.hlp
HelpString: Microsoft SQLDMO Object Library
Delphi IDE'sinde Project -> Import Yype Library -> çıkan menüde "Microsoft SQLDMO Object Library(Version 8.0)" seçip "Create Unit" butonuna basın.Yaklaşık 2 dk süren bir işlemden sonra 2.5 MB(65K satır) boyutunda SQLDMO_TLB.pas uniti oluşacaktır.
NOT1:
SQLDMO_TLB unitini projede kullandığımda derleyici SQLDMO_TLB.pas'ın "property ID: Integer readonly dispid 10;" satırında
"[Error] SQLDMO_TLB.pas(12630): Identifier redeclared: 'ID'
hatasını verdi.SQLDMO_TLB unitinide bu satırı iptal ettim:
Kod: Tümünü seç
property TypeOf: SQLDMO_OBJECT_TYPE readonly dispid 4;
property Properties: Properties readonly dispid 7;
property Name: WideString dispid 9;
//property ID: Integer readonly dispid 10; //<----------iptal edilen satır
property SourceObjectOwner: WideString dispid 11;
property SourceObjectName: WideString dispid 12;
property Description: WideString dispid 13;
procedure Remove; dispid 100;
procedure BeginAlter; dispid 101;
NOT2:
SQLDMO_TLB uses kısmına eklenmişse projede Application nesnesini, başına Forms ekleyerek kullanınn.Aynı isimde SQLDMO_TLB unitinde de tanımlanmış.
Forms.Application.MessageBox('Yanlış Şifre Girdiniz....','UYARI',MB_OK);
SQLDMO ile ilgili örnek uygulamalar:
1-)SQLDMO ile local bilgisayar ve yerel ağdaki çalışan sql server listesi alma:
Kod: Tümünü seç
//SQLDMO ile local bilgisyar ve yerel ağdaki çalışan sql server listesi al
procedure GetAvailableServers( ServerList : TStrings);
var
SQLDMO:Application;
ListOfServers:NameList;
i:integer;
begin
SQLDMO:=CoApplication.Create;
ListOfServers:=SQLDMO.ListAvailableSQLServers;
for i:=1 to ListOfServers.Count do
begin
ServerList.Add(ListOfServers.Item(i));
end;
end;
Kod: Tümünü seç
procedure TForm1.Button2Click(Sender: TObject);
begin
ComboBox1.Items:= GetAllServers;
end;
Kod: Tümünü seç
//SQLDMO ile local bilgisyar ve yerel ağdaki çalışan sql server listesi al
function GetAllServers:TStringList;
var
sApp : _Application ;
sName : NameList;
rtn :TStringList;
count,i :Integer;
begin
try
sApp :=coApplication.Create;
sName :=sApp.ListAvailableSQLServers;
rtn :=TStringList.Create;
count :=SName.Count;
for i :=0 to count -1 do
begin
rtn.Append(sName.Item(i));
end;
result :=rtn;
except
on E :Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER : '+E.message),'SQLSERVER',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
GetAvailableServers(ComboBox1.Items);
end;
diğer bir fonksiyon:
Kod: Tümünü seç
function SQLServerList(var ServerList:Tstrings):integer;
var
SQLServer:Variant;
SvrList:Variant;
i,nServers:integer;
sRetValue:String;
begin
SQLServer := CreateOleObject('SQLDMO.Application');
SvrList:= SQLServer.ListAvailableSQLServers;
nServers:=SvrList.Count;
serverlist.Clear;
for i := 1 to nservers do
serverlist.Add(svrlist.Item(i));
SQLServer:=NULL;
svrList:=NULL;
result:=nServers;
end;
Kod: Tümünü seç
//SQLDMO ile Sql Servere ping atarak versiyonu öğrenme
function getSQLServerVersion(ServerName,LoginName,LoginPassword:String):String;
var
osqlserver :_SqlServer;
temp :SQLDMO_SQL_VER;
begin
try
oSqlserver :=coSqlserver.Create;
oSqlserver._AddRef;
oSqlserver.Name :=ServerName;
temp :=oSqlserver.PingSQLServerVersion(ServerName,LoginName,LoginPassword);
if temp=SQLDMOSQLVer_Unknown then
result :='UnknownVer'
else if temp=SQLDMOSQLVer_Pre_60 then
result :='SQL60'
else if temp=SQLDMOSQLVer_60 then
result :='SQL60'
else if temp=SQLDMOSQLVer_65 then
result :='SQL65'
else if temp=SQLDMOSQLVer_70 then
result :='SQL70'
else
result :='SQL2000';
oSqlserver._Release;
oSqlserver :=nil;
except
on E :Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER : '+E.message),'SQLSERVER',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button5Click(Sender: TObject);
begin
Label4.Caption:= getSQLServerVersion('.','sa',''); //(<bilgisyatAdı>,<KullanıcıAdı>,<Şifre>)
end;
Kod: Tümünü seç
//SQLDMO ile Sql Servere ping atarak versiyonu öğrenme
//_SQLServer ------> uses SQLDMO_TLB
//TOleEnum ------> uses ActiveX
function PingSQLServerVersion(const ServerName, UserName, Password: string):single;
var
oSQLServer: _SQLServer;
oSQLDMO_SQL_VER: TOleEnum;
begin
oSQLServer := CoSQLServer.Create;
oSQLDMO_SQL_VER := oSQLServer.PingSQLServerVersion(ServerName,UserName,Password);
oSQLServer := nil;
case oSQLDMO_SQL_VER of
SQLDMOSQLVer_Pre_60: result := 5.0;
SQLDMOSQLVer_60 : result := 6.0;
SQLDMOSQLVer_65 : result := 6.5;
SQLDMOSQLVer_70 : result := 7.0;
SQLDMOSQLVer_80 : result := 8.0;
else result := 0.0;
end;
end;
kullanımı:
Kod: Tümünü seç
procedure TForm1.Button6Click(Sender: TObject);
begin
try
if PingSQLServerVersion('.','sa','')<>0 then
showmessage('server çalışıyor..')
except
showmessage('server çalışmıyor.......');
end;
end;
Kod: Tümünü seç
//SQLDMO ile sql server veritabanına bağlantı
function ConnectToServer(const FHost, FLogin, FPWD: string): Boolean;
var
SQLServer: _SQLServer;
FLoginSecure:WordBool;
begin
sqlserver:=coSqlserver.Create;
//SqlServer.LoginSecure:= FLoginSecure;// NT-->Login Password;
try
sqlServer.Connect(FHost,FLogin,FPWD);
result:=True;
except
On E:EOleException do
begin
ShowMessage(e.Message);
result:=false;
end;
end;
sqlserver:=nil;
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
begin
if ConnectToServer('.','sa','') then
showmessage('server çalışıyor')
else
showmessage('server çalışmıyor.....');
end;
Kod: Tümünü seç
//SQLDMO ile sql server bağlantı kontrolü
function GetConnected(const ServerAdi,KullaniciAdi,Sifre:string): Boolean;
var
oSQLServer: _SQLServer;
begin
try
osqlserver:=coSqlserver.Create;
osqlserver.Connect(ServerAdi,KullaniciAdi,Sifre) ;
Result := oSQLServer.VerifyConnection(SQLDMOConn_CurrentState);
except
ShowMessage('SQL Hata....');
end;
osqlserver:=nil;
end;
Kod: Tümünü seç
procedure TForm1.Button11Click(Sender: TObject);
begin
if GetConnected('.','sa','') then
ShowMessage('Bağlantı var...')
else
ShowMessage('Bağlantı yok...');
end;
Kod: Tümünü seç
//SQLDMO ile bir sql server'deki veritabanı adları alma
function getAllDataBases(serverName,LoginName,LoginPassword:String):TStringList;
var
oSqlServer :_SqlServer;
rtn :TStringList;
odataBase :_DataBase;
count,i :Integer;
begin
try
osqlServer :=coSqlServer.Create;
osqlServer._AddRef;
osqlServer.Connect(ServerName,LoginName,LoginPassword);
count :=osqlServer.Databases.Count;
rtn :=TStringList.Create;
for i :=1 to count do
begin
odataBase :=osqlserver.Databases.Item(i,'owner');
rtn.Append(odataBase.Name);
end;
result :=rtn;
osqlServer.DisConnect;
oSqlServer._Release;
osqlServer :=nil;
except
on E :Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER : '+E.message),'SQLSERVER',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button4Click(Sender: TObject);
begin
ListBox1.Items:=getAllDataBases(ComboBox1.Text,'sa','');
end;
Kod: Tümünü seç
//SQLDMO ile veritabanı oluşturma
procedure createDatabase(serverName,LoginName,LoginPassword,dataBaseName:String);
var
odataBase :_Database;
oDBFileData :_DBFile;
oLogFile :_LogFile;
osqlServer :_SqlServer;
begin
try
osqlServer :=cosqlServer.Create;
osqlServer._AddRef;
osqlServer.Connect(serverName,LoginName,LoginPassword);
odataBase :=coDataBase.Create;
odataBase._AddRef;
oDBFileData :=coDBFile.Create;
oDBFileData._AddRef;
oLogFile :=coLogFile.Create;
oLogFile._AddRef;
oDataBase.Name :=dataBaseName;
oDBFileData.Name :=dataBaseName;
//'c:\program files\microsoft sql server\mssql\data\'
oDBFileData.PhysicalName :=oSqlServer.Registry.SQLDataRoot +'\data\'+dataBaseName+'.mdf';
oDBFileData.PrimaryFile :=true;
oDBFileData.Size :=2;
oDBFileData.FileGrowthType := SQLDMOGrowth_MB;
oDBFileData.FileGrowth := 1;
oDatabase.FileGroups.Item('PRIMARY').DBFiles.Add(oDBFileData);
oLogFile.Name :=dataBaseName+'Log';
oLogFile.PhysicalName :=oSqlServer.Registry.SQLDataRoot +'\data\'+dataBaseName+'.ldf';
oLogFile.Size :=2;
oDatabase.TransactionLog.LogFiles.Add(oLogFile);
oSqlServer.Databases.Add(oDatabase);
osqlServer.DisConnect;
oSqlServer._Release;
oSqlServer :=nil;
oDataBase._Release;
oDataBase :=nil;
oDBFileData._Release;
oDBFileData :=nil;
oLogFile._Release;
oLogFile :=nil;
except
on E:Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER : '+E.message),'SQLSERVER',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button7Click(Sender: TObject);
begin
//dbBORDRO adlı veritabanını oluştursun
createDatabase('.','sa','','dbBORDRO');
end;
Kod: Tümünü seç
//SQLDMO ile veritabanı oluşturma
function CreateSQLDatabase(ServerName:string; DBName:string ;DBPath:string ):Integer;
const
SQLDMOGrowth_MB = 0;
var
Server,DataBase,LogFile,DBFileData : OleVariant ;
FileGroup : OLEVariant ;
begin
//sql servere bağlan
Server := CoSQLServer.Create ;
//sql server authentication login
Server.Connect(Server,'sa','') ;
{
//win nt authentication login
Server.LoginSecure := True ;
Server.Connect(Server);
}
DataBase := CoDatabase.Create ;
DBFileData := CoDBFile.Create ;
LogFile := CoLogFile.Create ;
Database.Name := DBName ;
//database dosyası
DBFileData.Name := (DBPath + '_Data') ;
DBFileData.PhysicalName := (DBPath + '.mdf') ;
DBFileData.PrimaryFile := True ;
DBFileData.FileGrowthType := SQLDMOGrowth_MB ;
DBFileData.FileGrowth := 1 ;
//database transaction log dosyası
LogFile.Name := (DBPath + '_Log') ;
LogFile.PhysicalName := (DBPath + '.ldf');
Database.TransactionLog.LogFiles.Add(LogFile) ;
//PRIMARY grubuna ekle
Database.FileGroups.Item('PRIMARY').DBFiles.Add(DBFileData) ;
//datadase register et
Server.Databases.Add(Database) ;
Server.Disconnect ;
Server := Null ;
Result := 1;
end;
Kod: Tümünü seç
procedure TForm1.Button3Click(Sender: TObject);
var
server_name,db_name,db_path:string;
begin
server_name:='127.0.0.1';
db_name:='MUSDB';
db_path:=ExtractFilePath(Forms.Application.ExeName)+'DATA\MUSDB';
if CreateSQLDatabase(server_name,db_name,db_path)=1 then
Showmessage('veritabanı oluşturuldu')
else
Showmessage('veritabanı oluşturulamadı........');
end;
Kod: Tümünü seç
//SQLDMO ile veritabanı silme
procedure dropDatabase(serverName,LoginName,LoginPassword,dataBaseName:String);
var
osqlServer:_SqlServer;
begin
try
osqlServer :=coSqlserver.Create;
osqlServer._AddRef;
osqlServer.Connect(serverName,LoginName,LoginPassword);
osqlServer.Databases.Remove(dataBaseName,'owner');
oSqlServer.DisConnect;
osqlServer._Release;
oSqlServer :=nil;
except
on E:Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER : '+E.message),'SQLSERVER',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button8Click(Sender: TObject);
begin
//dbBORDRO adlı veritabanını sil
dropDatabase('.','sa','','dbBORDRO');
end;
Kod: Tümünü seç
//SQLDMO ile veritabanı yedeğini alma
function BackupDatabase(serverName,LoginName,LoginPassword,DBName,BackupFile: string): Boolean;
var
osqlserver: _SQLServer;
oBackup:_Backup;
obackupdrv:_backupdevice;
begin
osqlserver:=coSqlserver.Create;
osqlserver.Connect(serverName,LoginName,LoginPassword) ;
try
DeleteFile(BackupFile);
try
oBackup:=coBackup.Create;
obackupdrv:=coBackupDevice.Create ;
obackupdrv.name:=DBName+'_bak';
obackupdrv.Type_ :=SQLDMODevice_DiskDump;
obackupdrv.PhysicalLocation :=BackupFile ;
try
osqlServer.BackupDevices.Add(obackupdrv);
except
showmessage('SQL Hata....');
end;
oBackup.action:=SQLDMOBackup_Database;
oBackup.database:=DBName;
oBackup.Devices :=DBName+'_bak';
oBackup.SQLBackup(osqlserver) ;
result:=True;
except
On E:EOleException do
begin
ShowMessage(e.Message);
result:=false;
end;
end;
finally
osqlserver:=nil;
oBackup:=nil;
obackupdrv:=nil;
end;
end;
//sql server--->enterprise manager--->management--->backup
//altında önceden oluşturulmuş bir backup device varsa bunu siler
procedure dropBackUpDevice(serverName,Loginname,LoginPassword,deviceName:String);
var
osqlServer :_SqlServer;
count,i:Integer;
oBackupDevice :_BackupDevice;
begin
try
osqlServer :=coSqlServer.Create;
osqlServer._AddRef;
osqlServer.Connect(servername,LoginName,LoginPassword);
count :=osqlServer.BackupDevices.Count;
For i :=1 to count do
begin
oBackupDevice:=osqlServer.BackupDevices.Item(i);
if UpperCase(Trim(oBackupDevice.Name))=UpperCase(trim(deviceName+'_bak')) then
begin
oSqlServer.BackupDevices.Remove(i);
break;
end;
end;
oSqlserver.DisConnect;
oSqlServer._Release;
oSqlServer :=nil;
except
on E :Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER : '+E.message),'SQLSERVER',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button12Click(Sender: TObject);
var
db_name,db_path:string;
begin
db_name:='dbBORDRO'; //veritabanı adı
db_path:='C:\Bord.bck'; //yedeklemenin yapılacağı dosya adı
dropBackUpDevice('.','sa','',db_name); //BackupDatabase fonksiyonu hata vermesin diye önceden oluşturulmuş backup device varsa siler
BackupDatabase('.','sa','',db_name,db_path);
end;
Kod: Tümünü seç
//SQLDMO ile veritabanı yedeğini alma
procedure createBackUpDatabase(serverName,LoginName,LoginPassword,DBName,FileName:String);
var
osqlServer :_SqlServer;
oBackup:_Backup;
oBackupDevice :_BackupDevice;
begin
try
osqlServer :=coSqlServer.Create;
osqlserver._AddRef;
osqlServer.Connect(servername,LoginName,LoginPassword);
oBackupDevice :=coBackupDevice.Create;
oBackupDevice.PhysicalLocation :=FileName;
oBackupDevice.Type_ :=SQLDMODevice_DiskDump;
osqlServer.BackupDevices.Add(oBackupDevice);
oBackup.action:=SQLDMOBackup_Database;
oBackup.database:=DBName;
oBackup.Devices :=DBName+'bak';
oBackup.SQLBackup(osqlserver) ;
osqlServer.DisConnect;
osqlserver._Release;
osqlserver :=nil;
oBackup:=nil;
oBackupDevice:=nil;
except
on E :Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER : '+E.message),'SQLSERVER',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button9Click(Sender: TObject);
var
db_name,db_path:string;
begin
db_name:='dbBORDRO'; //veritabanı adı
db_path:='C:\Bord.bck'; //yedeklemenin yapılacağı dosya adı
dropBackUpDevice('.','sa','',db_name); //BackupDatabase fonksiyonu hata vermesin diye önceden oluşturulmuş backup device varsa siler
createBackUpDatabase('.','sa','',db_name,db_path);
end;
Kod: Tümünü seç
//SQLDMO ile veritabanı yedeğini geri yükleme
function RestoreDB(serverName,LoginName,LoginPassword,DBName, RestoreFile: string): Boolean;
var
osqlserver: _SQLServer;
oRestore:_Restore;
begin
osqlserver:=CoSQLServer.Create;
osqlserver.Connect(serverName,LoginName,LoginPassword) ;
try
oRestore:=CoRestore.Create;
oRestore.Files:=RestoreFile;
oRestore.Database:=DBName;
oRestore.SQLRestore(osqlserver);
ShowMessage('Database geri yükleme tamamlandı...');
result:=True;
osqlserver:=nil;
oRestore:=nil;
except
On E:EOleException do
begin
ShowMessage(e.Message);
result:=false;
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button13Click(Sender: TObject);
begin
RestoreDB('.','sa','','dbBORDRO','C:\Bord.bck');
end;
pubs veritabanında jobs tablosunun scriptini göstersin.
Kod: Tümünü seç
//tablo sql scriptini gösterme
procedure TForm1.Button20Click(Sender: TObject);
var
DMO,DB,TB: OLEvariant;
Str:string;
begin
Dmo:= CreateOleObject('SQLDMO.SQLServer');
DB:= CreateOleObject('SQLDMO.DataBase');
TB:= CreateOleObject('SQLDMO.table');
Dmo.connect('.','sa','');
db:=dmo.databases.item('pubs');
tb:=db.tables.item('jobs');
str:=tb.script();
showmessage(str);
Dmo:=null;
DB:=null;
TB:=null;
end;
SQLDMO fonksiyonlarını kullanarak MS SQL Server Database Manager programını yapalım:
Kod: Tümünü seç
//çalışabilir durumdaki sql server listesi
function GetAllServers:TStringList;
var
sApp : _Application ;
sName : NameList;
rtn :TStringList;
count,i :Integer;
begin
try
sApp :=coApplication.Create;
sName :=sApp.ListAvailableSQLServers;
rtn :=TStringList.Create;
count :=SName.Count;
for i :=0 to count -1 do
begin
rtn.Append(sName.Item(i));
end;
result :=rtn;
except
on E :Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER :'+E.message),'SQL Server Service Manager',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
str_exe:=ExtractFilePath(Forms.Application.ExeName);
ComboBox1.Items.Assign(GetAllServers);
ComboBox1.ItemIndex:=0;
//sql server service :sql server veritabanı motoru
ComboBox2.ItemIndex:=0;
end;
Kod: Tümünü seç
//sql server başlat
function StartSQLServer(ServerName,LoginName,LoginPassword:String):Boolean;
var
oSqlServer :_SqlServer;
begin
try
osqlserver :=coSqlserver.Create;
oSqlServer._AddRef;
osqlserver.Name :=serverName;
if oSqlServer.Status =SQLDMOSvc_Stopped then
oSqlServer.Start(False,ServerName,LoginName,LoginPassword);
if oSqlServer.Status=SQLDMOSvc_Paused then
oSqlServer.Continue;
if (oSqlServer.Status=SQLDMOSvc_Paused) or (oSqlServer.Status=SQLDMOSvc_Stopped) then
result :=False
else
result :=true;
oSqlServer._Release;
oSqlServer :=nil;
except
on E :Exception do
begin
result:=False;
Forms.Application.MessageBox(Pchar('SQLSERVER :'+E.message),'SQL Server Service Manager',MB_OK+MB_ICONSTOP);
end;
end;
end;
//sql server duraklat
function PauseSQLServer(ServerName:String):Boolean;
var
oSqlserver :_SqlServer;
begin
try
oSqlServer :=coSqlserver.Create;
oSqlserver._AddRef;
oSqlserver.Name :=ServerName;
oSqlServer.Pause;
oSqlserver._Release;
oSqlserver :=nil;
result :=true;
except
on E :Exception do
begin
result :=false;
Forms.Application.MessageBox(Pchar('SQLSERVER :'+E.message),'SQL Server Service Manager',MB_OK+MB_ICONSTOP);
end;
end;
end;
//sql server durdur
function StopSQLServer(serverName:String):Boolean;
var
oSqlserver :_SqlServer;
begin
try
oSqlServer :=coSqlserver.Create;
oSqlserver._AddRef;
oSqlserver.Name :=ServerName;
oSqlServer.Stop;
oSqlserver._Release;
oSqlserver :=nil;
result :=true;
except
on E :Exception do
begin
result :=false;
Forms.Application.MessageBox(Pchar('SQLSERVER :'+E.message),'SQL Server Service Manager',MB_OK+MB_ICONSTOP);
end;
end;
end;
//sql server durumu
function getSQLServerStatus(ServerName:String):String;
var
oSqlServer :_SqlServer;
begin
try
osqlserver :=coSqlserver.Create;
osqlServer._AddRef;
osqlserver.Name :=serverName;
if oSqlserver.Status=SQLDMOSvc_Unknown then
result :='Unknown '
else if oSqlserver.Status=SQLDMOSvc_Running then
result :='Running '
else if oSqlserver.Status=SQLDMOSvc_Paused then
result :='Paused '
else if oSqlserver.Status=SQLDMOSvc_Stopped then
result :='Stopped '
else if oSqlserver.Status=SQLDMOSvc_Starting then
result :='Starting '
else if oSqlserver.Status=SQLDMOSvc_Stopping then
result :='Stopping '
else if oSqlserver.Status=SQLDMOSvc_Continuing then
result :='Continuing '
else if oSqlserver.Status=SQLDMOSvc_Pausing then
result :='Pausing ';
oSqlserver._Release;
oSqlserver :=nil;
except
on E :Exception do
begin
Forms.Application.MessageBox(Pchar('SQLSERVER :'+E.message),'SQL Server Service Manager',MB_OK+MB_ICONSTOP);
end;
end;
end;
Kod: Tümünü seç
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if StartSQLServer('.','sa','') then
begin
StatusBar1.Panels[0].Text:=getSQLServerStatus(ComboBox1.Text)+'-'+'\\'+ComboBox1.Text+'-'+'MSSQLServer';
Image1.Picture.LoadFromFile(str_exe+'runningserver.bmp');
SpeedButton1.Enabled:=false;
SpeedButton2.Enabled:=true;
SpeedButton3.Enabled:=true;
end
else
begin
end;
end;
Kod: Tümünü seç
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if Forms.Application.MessageBox(Pchar('\\'+ComboBox1.Text+ ' üzerinde MSSQLSERVER servisini DURAKLATMAK istiyor musunuz?'),'SQL Server Service Manager',MB_YESNO+MB_ICONINFORMATION)=ID_YES then
begin
PauseSQLServer(ComboBox1.Text);
StatusBar1.Panels[0].Text:=getSQLServerStatus(ComboBox1.Text)+'-'+'\\'+ComboBox1.Text+'-'+'MSSQLServer';
Image1.Picture.LoadFromFile(str_exe+'pauseserver.bmp');
SpeedButton1.Enabled:=true;
SpeedButton2.Enabled:=false;
SpeedButton3.Enabled:=true;
end;
end;
Kod: Tümünü seç
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if Forms.Application.MessageBox(Pchar('\\'+ComboBox1.Text+ ' üzerinde MSSQLSERVER servisini DURDURMAK istiyor musunuz?'),'SQL Server Service Manager',MB_YESNO+MB_ICONINFORMATION)=ID_YES then
begin
StopSQLServer(ComboBox1.Text);
StatusBar1.Panels[0].Text:=getSQLServerStatus(ComboBox1.Text)+'-'+'\\'+ComboBox1.Text+'-'+'MSSQLServer';
Image1.Picture.LoadFromFile(str_exe+'stopserver.bmp');
SpeedButton1.Enabled:=true;
SpeedButton2.Enabled:=true;
SpeedButton3.Enabled:=false;
end;
end;
.