merhaba
Delphi 7 ile test etmedim ancak hatanın sebebi silmek istediğin veritabanına bağlı bulunmandan kaynaklı olduğunu sanıyorum.
Diyelim ki Ado bağlantısı ile DB1 adlı veritabanına bağlandın.
Sonra bağlantın devam ederken drop data_base DB1 komutunu çalıştırırsan veri tabanı kullanılmakta olduğu için hata verir.
Bu sorunu çözmek için, silme komutunu vermeden önce AdoConnection1.DefaultDatabase:='master'; şeklinde bağlantı veritabanını değiştirebilirsin.
Böylelikle en azında kendi bağlantını kesmiş olursun. Ancak silme komutu esnasında başka bir uygulama tarafından veritabanı kullanılıyorsa yine aynı
hata çıkacaktır.
Silme işlemi esnasında Enterprise manager, SQLServer Management Studio gibi veritabanı yönetim araçlarını da kapatman gerekebilir.
Kolay gelsin.
MSSQL 2005 de Database Silmede Hata
- supervisor
- Üye
- Mesajlar: 50
- Kayıt: 07 Kas 2005 10:38
- Konum: Turgutlu
Re: MSSQL 2005 de Database Silmede Hata
akdatilla yazdı:merhaba
Delphi 7 ile test etmedim ancak hatanın sebebi silmek istediğin veritabanına bağlı bulunmandan kaynaklı olduğunu sanıyorum.
Diyelim ki Ado bağlantısı ile DB1 adlı veritabanına bağlandın.
Sonra bağlantın devam ederken drop data_base DB1 komutunu çalıştırırsan veri tabanı kullanılmakta olduğu için hata verir.
Bu sorunu çözmek için, silme komutunu vermeden önce AdoConnection1.DefaultDatabase:='master'; şeklinde bağlantı veritabanını değiştirebilirsin.
Böylelikle en azında kendi bağlantını kesmiş olursun. Ancak silme komutu esnasında başka bir uygulama tarafından veritabanı kullanılıyorsa yine aynı
hata çıkacaktır.
Silme işlemi esnasında Enterprise manager, SQLServer Management Studio gibi veritabanı yönetim araçlarını da kapatman gerekebilir.
Kolay gelsin.
Selamlar;
Programda zaten güvenlik var.Bulundugun Db de aynı zamanda silme yapamam. Bu normal. Normal olmayan hani başka Db ye geçin sonra silin dedinizya,silmek istediğim Db ile ilgili bütün Adoları sonlandırıyorum. drop data_base yapınca Db mesgul uyarısı veriyor.


Re: MSSQL 2005 de Database Silmede Hata
Tekrar merhaba
Sizin bahsettiğiniz olayın nasıl gerçekleştiğini denemek için bir Test programı hazırladım
Aşağıda programın kodlarını veriyorum. Bu programı kendi sisteminiz uyarlayıp (şifre ve bağlantı ayarlarını yapın) çalıştırın.
Önce DBAcveKullan butonuna tıklayın. Ekranda bir tablonun listesi görülecektir. Daha sonra DBSil butonuna tıklayın.
Benim sistemimde DB Silindi mesajını alıyorum. Hiç bir hata mesajı almadan çalışma zamanında db açıyorum, kullanıyorum ve
halen kullanımda olan (ekranda liste mevcutken) db'yi siliyorum. Bu program sizin sisteminizde hata mesajı veriyorsa o zaman
kullandığınız delphi yada mssql versiyonu ile ilgili bir problem olabilir.
Sizin bahsettiğiniz olayın nasıl gerçekleştiğini denemek için bir Test programı hazırladım
Aşağıda programın kodlarını veriyorum. Bu programı kendi sisteminiz uyarlayıp (şifre ve bağlantı ayarlarını yapın) çalıştırın.
Önce DBAcveKullan butonuna tıklayın. Ekranda bir tablonun listesi görülecektir. Daha sonra DBSil butonuna tıklayın.
Benim sistemimde DB Silindi mesajını alıyorum. Hiç bir hata mesajı almadan çalışma zamanında db açıyorum, kullanıyorum ve
halen kullanımda olan (ekranda liste mevcutken) db'yi siliyorum. Bu program sizin sisteminizde hata mesajı veriyorsa o zaman
kullandığınız delphi yada mssql versiyonu ile ilgili bir problem olabilir.
Kod: Tümünü seç
program mstestpr1;
uses
Forms,
mstestu1 in 'mstestu1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Kod: Tümünü seç
unit mstestu1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;
type
TForm1 = class(TForm)
Con1: TADOConnection;
Q1: TADOQuery;
Q2: TADOQuery;
DBAcveKullan: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBSil: TButton;
procedure DBSilClick(Sender: TObject);
procedure DBAcveKullanClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DBAcveKullanClick(Sender: TObject);
Var
j:integer;
begin
Con1.Close;
Con1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;'+
'User ID=sa;Initial Catalog=master;Data Source=ARGE03\SQLEXPRESS;Password=1234;'+
'Application Name=TESTPROGRAMI';
Con1.Open;
q1.Close;
q1.SQL.Text:='CREATE DATABASE MYTESTDB';
q1.ExecSQL;
Con1.DefaultDatabase:='MYTESTDB';
q1.Close;
q1.SQL.Text:='CREATE TABLE TESTTBL (ID INT NOT NULL,'+
'RANDVAL INT, PRIMARY KEY (ID))';
q1.ExecSQL;
for j := 1 to 1000 do
begin
q1.Close;
q1.SQL.Text:='INSERT INTO TESTTBL (ID,RANDVAL) VALUES ('+inttostr(j)+
','+inttostr(random(1000))+')';
q1.ExecSQL;
end;
q2.Close;
q2.SQL.Text:='SELECT * FROM TESTTBL';
q2.Open;
end;
procedure TForm1.DBSilClick(Sender: TObject);
Var
vreccordsaffected:integer;
begin
Con1.DefaultDatabase:='master';
try
Con1.Execute('drop data_base MYTESTDB',vreccordsaffected);
except
showmessage('DB Silinemedi');
exit;
end;
showmessage('DB Silindi');
end;
end.
Kod: Tümünü seç
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 261
ClientWidth = 451
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object DBAcveKullan: TButton
Left = 232
Top = 40
Width = 75
Height = 25
Caption = 'DB A'#231
TabOrder = 0
OnClick = DBAcveKullanClick
end
object DBGrid1: TDBGrid
Left = 56
Top = 112
Width = 281
Height = 121
DataSource = DataSource1
TabOrder = 1
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
end
object DBSil: TButton
Left = 232
Top = 72
Width = 75
Height = 25
Caption = 'DBSil'
TabOrder = 2
OnClick = DBSilClick
end
object Con1: TADOConnection
LoginPrompt = False
Left = 32
Top = 40
end
object Q1: TADOQuery
Connection = Con1
Parameters = <>
Left = 120
Top = 40
end
object Q2: TADOQuery
Connection = Con1
Parameters = <>
Left = 176
Top = 40
end
object DataSource1: TDataSource
DataSet = Q2
Left = 176
Top = 80
end
end
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: MSSQL 2005 de Database Silmede Hata
İlginç, test çalışıyor
. Sanırım DB'ye bağlanan bileşenleri ayrı tutmaktan kaynaklanan bir durum. Çünkü tek ADOConnection bileşeni sorun çıkarmıyor.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- supervisor
- Üye
- Mesajlar: 50
- Kayıt: 07 Kas 2005 10:38
- Konum: Turgutlu
MSSQL 2005 de Database Silmede Hata
akdatilla bravo
Böyle bir durumu hiç düşünmedim desem yeridir.ßen hatayı nerelerde aradım
Tek bir adocon bileşeni işi hallediyor.Farklı adocon bileşeni silme yapmıyor.
Nerden bağlandıysan ordan sil mantığı
teşekkürler.

Böyle bir durumu hiç düşünmedim desem yeridir.ßen hatayı nerelerde aradım

Tek bir adocon bileşeni işi hallediyor.Farklı adocon bileşeni silme yapmıyor.
Nerden bağlandıysan ordan sil mantığı

- supervisor
- Üye
- Mesajlar: 50
- Kayıt: 07 Kas 2005 10:38
- Konum: Turgutlu
Re: MSSQL 2005 de Database Silmede Hata
Ama Entegre bir programı tek bir adoyla çalıştırmak benim için zor.Dll formlarla tablo bağlantılarım var.
Az kaldı yakında çözücem heralde 


