Sql server Start/stop

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ozsal
Üye
Mesajlar: 108
Kayıt: 22 Oca 2006 07:55
Konum: izmir
İletişim:

Sql server Start/stop

Mesaj gönderen ozsal »

S.a arkadaslar.
Forumda arattım ama hiç bi yerde istediğim bilgiye ulaşamadım. Belki de doğru şekilde aratmadım.

delphi ile Sql servera start stop exıt komutlarını nasıl verdırırım ?
bir de

kendi veritabanımı sql servera nasıl kayıt register edebilirim.
ilgilenen arkadaslara teşekkür ederim
En son ozsal tarafından 22 Ağu 2006 07:45 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

iyi günler hocam
sql serverde start stop olayı sql script ile çalışıyormu bilmiyorum. bu iş için ben bat dosyası kullanıyorum. (DB2'de sql script kullanıyorum)

başlatmak için:

Kod: Tümünü seç

@ECHO OFF
cd\
cd C:\Program Files\Microsoft SQL Server\MSSQL\Binn
net start mssqlserver 
durudurmak için:

Kod: Tümünü seç

@ECHO OFF
cd\
cd C:\Program Files\Microsoft SQL Server\MSSQL\Binn
net stop mssqlserver 
bu iki kodu *.bat dosyası haline getir ve delphi içinde çağırısın.

Kod: Tümünü seç

ShellExecute(0, 'open', pchar('start.bat'), nil, nil, SW_Hide); 
bat dosyasını veya exe'i nasıl çağıracağın hakkında forumda yeterli bilgi var. ShellExecute diye arattır.

kendi DB'sini yüklemek için manuel olarak yükleyecekseniniz yani sql script halinde ddl dosyası oluşturun ve programda yada konsolda çalıştırırsanız olur. ddl için ise bu örnek işinize yarar.
viewtopic.php?t=11934&start=0&postdays= ... hlight=ddl

kolay gelsin
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
ozsal
Üye
Mesajlar: 108
Kayıt: 22 Oca 2006 07:55
Konum: izmir
İletişim:

SLM

Mesaj gönderen ozsal »

merhaba. verdiğin kodu deneyeceğim. bu konuyu araştırken msssql klasorunun içinde scm.exe diye bi prog. buldum.

paramatreleri olarak -action {1=run ....... &=stop vs. } var.

dos moduna geçtim

ordan scm -action 6
scm /action 6
scm/action=6
...
.
.
.
.vs
değişik parametreli kullanmayı denedim çalışmadı

.
tşkler.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

bakmadım ama sqlserver bir servis olarak çalışıyorsa oradan yönetmek daha uygun olur diye düşünüyorum..
DeveloperToolKit

..::|YeşilMavi|::..
turkcanfidan
Üye
Mesajlar: 380
Kayıt: 31 Eki 2005 03:26

Mesaj gönderen turkcanfidan »

merhaba,

Servisi başlatmak için;

Kod: Tümünü seç

   
StartNTService('MSSQLSERVER');
gerekli unit:
(Bu kodu ServisKont adıyla kaydedin. sonra kendi projenize
uses ServisKont olarak ekleyebilirsiniz.

Kod: Tümünü seç

unit ServisKont;

interface
function StartNTService(const ServiceName: string): Boolean;
function StopNTService(const ServiceName: string): Boolean;

implementation

uses ShellApi, WinSvc, sysutils,Windows;

function StartNTService(const ServiceName: string): Boolean;
var
 SCM: SC_HANDLE;
 ServiceHandle: SC_HANDLE;
 Res: Boolean;
 Temp: PChar;
 Status: SERVICE_STATUS;
 Err: Integer;
begin
  Result := False;
  SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if SCM = 0 then
   raise Exception.Create('Servis Kontrol Yöneticisi açılamadı. Hata: ' + SysErrorMessage(getLastError));
  ServiceHandle := OpenService(SCM, PChar(ServiceName), SERVICE_ALL_ACCESS);
  if ServiceHandle = 0 then
  begin
    CloseServiceHandle(SCM);
    raise Exception.Create(ServiceName + ' isimli servis açılamadı. Hata: ' + SysErrorMessage(getLastError));
  end;
  Res := StartService(ServiceHandle, 0, Temp);
  if Res then
  begin
    Res := QueryServiceStatus(ServiceHandle, Status);
    while (Res) do
    begin
      if Status.dwCurrentState = SERVICE_RUNNING then
      begin
        Result := True;
        Break;
      end else if Status.dwCurrentState = SERVICE_STOPPED then
      begin
        Result := False;
        Break;
      end;
      QueryServiceStatus(ServiceHandle, Status);
    end;
  end else begin
    Err := GetLastError;
    if  Err <> ERROR_SERVICE_ALREADY_RUNNING then
    raise Exception.Create(ServiceName + ' isimli servis başlatılamadı. Hata:' + SysErrorMessage(Err));
  end;
  CloseServiceHandle(SCM);
  if not Result then
    raise Exception.Create(ServiceName + ' isimli servis başlatılamadı');
 end;

// Servisi durdurur
function StopNTService(const ServiceName: string): Boolean;
var
 SCM: SC_HANDLE;
 ServiceHandle: SC_HANDLE;
 Res: Boolean;
 Status: SERVICE_STATUS;
begin
  Result := False;
  SCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if SCM = 0 then
   raise Exception.Create('Servis Kontrol Yöneticisi açılamadı');
  ServiceHandle := OpenService(SCM, PChar(ServiceName), SERVICE_ALL_ACCESS);
  if ServiceHandle = 0 then
  begin
    CloseServiceHandle(SCM);
    raise Exception.Create(ServiceName + ' isimli servis açılamadı. Hata: ' + SysErrorMessage(getLastError));
  end;
  Res := ControlService(ServiceHandle, SERVICE_CONTROL_STOP, Status);
  if not Res then
  begin
    if GetLastError <> ERROR_SERVICE_NOT_ACTIVE then
      raise Exception.Create('Servis durdurulamadı');
  end else Result := True;
end;

end.
kolay gelsin @ozsal ;)
turkcanfidan
Üye
Mesajlar: 380
Kayıt: 31 Eki 2005 03:26

Mesaj gönderen turkcanfidan »

ayrıca başlığın bu konuya uygun değil, SQL SERVER ı açıp kapamak veya sql server service start/stop gibi birşey yazmak lazım arayanların bulması açısından.
Kullanıcı avatarı
ozsal
Üye
Mesajlar: 108
Kayıt: 22 Oca 2006 07:55
Konum: izmir
İletişim:

Mesaj gönderen ozsal »

Teşekkürler. Turkcan Bey; :wink:
Aradığım şey de buydu. Nihayet sonunda.
evet şimdi bu şekilde servisin kontolunu sağlayabiliyorum.
Yardımlarınız ve uyarılarınınz için çok teşekkürler.

Peki ikinci soru konusunda herhangi bir bilginiz varmı?
yani
program fıles\msqlserver...\hesap.log ve hesap.mdb ( dosya uzantıları bunlardı galiba) isimli databaseleri sqlservere nasıl register edebilirim?

Bu bilgileri installer programı için istiyorum. Şu an elimde bitmiş bir projem var.

installerı kendim yapmak istiyorum.
progam instalları çalıştıgında
sql server kontolu yapacak
yuklu ise servisi durdurup
biraz once bahsettiğim log ve mdb ( emin değilim şu an bakamıyorum )
dosyalarını register edecek ( ki bunu nasıl yapacağım hususunda bi fikrim yok ) yoksa sql serverı kuracak makinaya;
ise kur benım exelerımı belirledğiğim dizine atacak.
her şeyi bitirdim şu an sadece register olayı kaldı. Yardım edebilecek arkadaslara şimdiden teşekkür ederim.
ii çalışmalar.
kolay gelsin
Kullanıcı avatarı
ozsal
Üye
Mesajlar: 108
Kayıt: 22 Oca 2006 07:55
Konum: izmir
İletişim:

Mesaj gönderen ozsal »

Turkcan Bey uyardıgınız için teşekkür ederim. Başlıgı değiştirdim..
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Register dediğin Connect mi?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Olay budur

Mesaj gönderen sabanakman »

şu sql kodu işinizi görecektir.

Kod: Tümünü seç

EXEC sp_attach_db @dbname = 'ben', @filename1 = 'c:\pubs.mdf', @filename2 = 'c:\pubs_log.ldf'
bunu delphi içinde kullanırsak

Kod: Tümünü seç

  AdoConnection1.Execute('EXEC sp_attach_db @dbname = ''ben'', @filename1 = ''c:\pubs.mdf'', @filename2 = ''c:\pubs_log.ldf''');
veya

Kod: Tümünü seç

  AdoQuery1.Sql.Clear;
  AdoQuery1.Sql.Add('EXEC sp_attach_db @dbname = ''ben'', @filename1 = ''c:\pubs.mdf'', @filename2 = ''c:\pubs_log.ldf''');
  AdoQuery1.ExecSQL;
kodlarıyla çalışabilirsin. Önemli bir uyarı, bu bileşenler "master" kataloğuna (veritabanına) bağlanması gerekmektedir, zira "sp_attach_db" stored procedure kodu bu katalogda tanımlıdır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Şaban arkadaşın dediği gibi.

Master Database ine bağlanmadan Sql Server a database eklenmesi yapılamaz,
Kullanıcı avatarı
ozsal
Üye
Mesajlar: 108
Kayıt: 22 Oca 2006 07:55
Konum: izmir
İletişim:

slm

Mesaj gönderen ozsal »

ilgilendiğiniz için teşekkür ederim
ok
peki şimdi
install yaparken sql serverı kurdum. burda ado connectıon ekleyıp mastera bağlandıktan sonra mı bu kodları kullanacagım.
turkcanfidan
Üye
Mesajlar: 380
Kayıt: 31 Eki 2005 03:26

Mesaj gönderen turkcanfidan »

Formun üstüne bir tane ADOConnection koy, master diye belirtmene gerek yok, arkadaşın verdiği kod işini görecektir.
Kullanıcı avatarı
ozsal
Üye
Mesajlar: 108
Kayıt: 22 Oca 2006 07:55
Konum: izmir
İletişim:

Mesaj gönderen ozsal »

ilgilendiğiniz için teşekkür ederim arkadaslar. Evet her şey mükemmel çalışşıyor. Benım gibi acemı arkadaslara uyarım, bu şekilde bağlantıyı sağladıktan sonra datalink file ile server adını kontrol edinn :D yoksa saatlerce uğraşrsınız.:)
Cevapla