kurulurken sql ayarlarını almak

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
dr_ebuzer
Üye
Mesajlar: 30
Kayıt: 29 Eki 2005 08:26

kurulurken sql ayarlarını almak

Mesaj gönderen dr_ebuzer »

selam arkadaşlar benim problemim şu bir delphi'de sözlük programı yazdım kullandığım veritabanı sql 2005 dosya uzantım mdf:şimdi benim istediğim bu programı isteyen herkesin bilgisayarına yüklemek ancak benim bilgisayarımdaki sql kullanıcı adı ve şifresi farklı diğer kuracak arkadaşlarınki farklı olacağından şöyle bir yöntem yapmak istiyorum:

formun create olayına öyle bir kod istiyorumki:
1- kullanıcı programı çalıştırdığında program gidip kullanıcının bilgisayarında sql 2005 varmı yokmu onu sorgulasın
2-sql 2005 varsa onun kullanıcı adını ve makinasının ismini adoconnection'un connectionstring ine otomatik olarak atsın
veya bunun daha kolay bir yolu varmı
yardımcı olursanız sevinirim şimdiden teşekkürler
3-sql 2005 kuruluysa benim mdf dosyamı nasıl attach yapabilirim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: kurulurken sql ayarlarını almak

Mesaj gönderen conari »

Servera Windows hesabı ile erişebilirmisiniz ona tam emin değilim..

attac için
Örnek

Kod: Tümünü seç

EXEC sp_attach_db @dbname = N'pubs', 
   @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
   @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
SQL Server listesi için

Kod: Tümünü seç

procedure ListAvailableSQLServers(Names : TStrings);
var
RSCon: ADORecordsetConstruction;
Rowset: IRowset;
SourcesRowset: ISourcesRowset;
SourcesRecordset: _Recordset;
SourcesName, SourcesType: TField;

function PtCreateADOObject(const ClassID: TGUID): IUnknown;
var
Status: HResult;
FPUControlWord: Word;
begin
asm
FNSTCW FPUControlWord
end;
Status := CoCreateInstance(
CLASS_Recordset,
nil,
CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER,
IUnknown,
Result);
asm
FNCLEX
FLDCW FPUControlWord
end;
OleCheck(Status);
end;
begin
SourcesRecordset := PtCreateADOObject(CLASS_Recordset) as _Recordset;
RSCon := SourcesRecordset as ADORecordsetConstruction;
SourcesRowset := CreateComObject(ProgIDToClassID('SQLOLEDB Enumerator')) as ISourcesRowset;
OleCheck(SourcesRowset.GetSourcesRowset(nil, IRowset, 0, nil, IUnknown(Rowset)));
RSCon.Rowset := RowSet;
with TADODataSet.Create(nil) do
try
Recordset := SourcesRecordset;
SourcesName := FieldByName('SOURCES_NAME'); { do not localize }
SourcesType := FieldByName('SOURCES_TYPE'); { do not localize }
Names.BeginUpdate;
try
while not EOF do
begin
if (SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE) and (SourcesName.AsString <> '') then
Names.Add(SourcesName.AsString);
Next;
end;
finally
Names.EndUpdate;
end;
finally
Free;
end;
End;
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: kurulurken sql ayarlarını almak

Mesaj gönderen sabanakman »

1-

Kod: Tümünü seç

uses Registry;

function SQLServerVersiyonu:String;
begin
  Result:='';
  with TRegistry.Create do try
    RootKey:=HKEY_LOCAL_MACHINE;
    if OpenKey('SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion',False) then
     Result:=ReadString('CurrentVersion');
  finally
    Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var S:String; i:Integer;
begin
  S:=SQLServerVersiyonu;
  i:=Pos('.',S); if i>0 then S:=Copy(S,1,i-1);
  if S='8' then Label1.Caption:='SQL Server 2000 yüklü'
  else if S='9' then Label1.Caption:='SQL Server 2005 yüklü'
  else if S='10' then Label1.Caption:='SQL Server 2008 yüklü'
  else Label1.Caption:='SQL Server yüklü değil'
end;
2-SQL kullanıcı ve şifresini bulmanın bir yoluna rastlamadım hiç o yüzden bağlantı yöntemini farklı kullanın. Window NT seçeneği ile veritabana bağlanabilirsiniz. Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=db_adi

3-sp_attach_db 'db_adi', 'c:\yol\db_adi.mdf', 'c:\yol\db_adi.ldf'

fazla cevap göz çıkarmaz :N)
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
dr_ebuzer
Üye
Mesajlar: 30
Kayıt: 29 Eki 2005 08:26

Re: kurulurken sql ayarlarını almak

Mesaj gönderen dr_ebuzer »

selam arkadaşlar dediklerinizi yaptım ancak yinede sql servere ulaşamadım
1- sorumu yazarken sql 2005 management expres
kullandığımı yazmamıştım acaba ondan dolayı olabilirmi

2-Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=db_adi
kodunu yazdığımda program hata veriyor acaba uses satırına eklememiz gereken bir şeyler varmı?
3-uses satırına yazdığımız kütüphaneler .....hangi kod hangi kütüphaneyi istiyor bununla ilgili bir döküman varmı

4-benim yaptığım sözlük arapça türkçe sözlük sql 2008 de arapça desteği(nvarchar) olduğu için mdf dosyasını tercih ettim
ama başka bir bilgisayara kurulum yaparken bu kadar problem yaşıyacağımı tahmin etmiyordum sormak istiyorum acaba daha kolay kurulumu olan ve arapcayı destekleyen delphinin kendi içinde db veritabanları varmı?

not:
birde arkadaşlar:program kodlarını yazarken sonlarına açıklama kısmı ekleyip bu kodla ne yapılmasını açıklama kısmına eklersek bizde en azından neyi niçin yaptığımızı sizin gibi delphiden anlıyan arkadaşların vesilesiyle daha iyi anlamaya çalışırız çünkü bizim delphi bilgimiz yeterli değil ama bu delphi sitesini çok seviyorum şu ana kadar ne öğrendiysem üç aşağı beş yukarı bu siteden öğrendim kitaplarda bile bulamadığımı çoğu zaman bu siteden arkadaşlarla yardımlaşarak buldum

şimdiden tüm delphici arkadaşlarıma teşekkür ederim :bravo:
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: kurulurken sql ayarlarını almak

Mesaj gönderen sabanakman »

İyi günler. Verdiğim cevapta altını çizdiğim db_adı değerini kendi veritabanınızın adını yazmanız gerekiyor. Veritabanınız adını bilmediğim için bu ismi kullandım ve dikkati oraya çekmek için altını çizdim. Bunun yerine kendi sözlük veritabanı adnınızı kullanmanız gerekmektedir. Eğer kendi oluşturduğunuz veritabanınızı SQL 2008'de oluşturduysanız bu .mdf dosyasını sadece SQL 2008'de kullanabilirsiniz. 2005 ve 2000 de kullanamazsınız. 2005 .mdf dosyası da 2000 de kullanılamaz. Bunun tersi mümkündür ama, bir aksilik yaşamadan çalıştırılırlar. Yılı yeni olan geçmiş yıllarda kullanılamaz ama eski olan dosya tipi sonraki yıllarda kullanılabilmektedir.

-En başa dönecek olursak SQL Server üzerinde veritabanınızın yüklü olmadığını farz edelim ve veritabanı ismini SOZLUK olduğunu varsayalım. Programınızı çalıştırmanız için ilk iş veritabanınızı SQL'e sp_attach_db ile kaydetmek olacak. Bu işlem için ise SQL Server master veritabanına bağlanmanız gerekmektedir.

-SQL Server master veritabanına "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=" stringi ile master veritabanına bağlanabilirsiniz. Bu arada sql server veritabanınız farklı bir isimle yüklenmişse (bu genelde SQLExpress olabiliyor). Bu durumda da bağlantı stringiniz "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=.\sqlexpress" şeklinde DataSource parametresiyle bu sql sunucusunu doğru olarak vermeniz gerekmektedir.

-SQL Server, master veritabanına bağlandıktan sonra sp_attach_db ile veritabanı dosyanızı SQL'e kaydetmek gerekmektedir.

Kod: Tümünü seç

EXEC sp_attach_db @dbname = N'SOZLUK', 
   @filename1 = N'c:\SozlukProgramYolu\SOZLUK.mdf', 
   @filename2 = N'c:\SozlukProgramYolu\SOZLUK_log.ldf'
Eğer SOZLUK veritabanı sistemde kayıtlı ise bu kod Database 'SOZLUK' already exists.şeklinde hata verecektir. Bu hata gelirse dert etmeye gerek yok.

-Bu işlemden sonra artık veritabanınız kullanılmaya hazırdır. Yukarıda master veritabanı için kullanılan string değerini SOZLUK veritabanına uyarlayarak "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SOZLUK;Data Source=" şeklinde kullanabilirsiniz.

SQL Server üzerinde biraz çalışma yaparsanız aslında yapmak istediğiniz işlem çok basit bir işlemdir. ConnectionString'de önemli olan sunucu adınının (DataSource parametresini) doğru verilmesidir. İyi çalışmalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
dr_ebuzer
Üye
Mesajlar: 30
Kayıt: 29 Eki 2005 08:26

Re: kurulurken sql ayarlarını almak

Mesaj gönderen dr_ebuzer »

şaban kardeşim yardımlarından dolayı öncelikle teşekkür ederim söylediklerinin üzerinde deneme yanılma yaparak en sonunda sql servera ulaştım
sorunsuz bir şekilde çalışıyor ancak attach kısmını yani ....EXEC sp_attach_db @dbname = N'SOZLUK',
@filename1 = N'c:\SozlukProgramYolu\SOZLUK.mdf',
@filename2 = N'c:\SozlukProgramYolu\SOZLUK_log.ldf'...
bu kodları nerede kullanacağımı bilmiyorum bunu sql serverde yazdığımda çalışıyor ve veritabanına sözlük veritabanını ekliyor ama anlıyamadığım bir şey var
ben bu kodu delphide nasıl kullanacağım nereye yazacağım eğer bu bir stored procedure ise bu konuda fazla bir bilgim yok bu stored procedure'ler delphide nasıl çağrılırlar bununla ilgili bir yardımcı olurmusun teşekkürler.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: kurulurken sql ayarlarını almak

Mesaj gönderen sabanakman »

Bunun için 2 yöntem önerebilirim. Veritabanına bağlanmış ADOQuery veya ADOConnection bileşenlerini kullanabilirsiniz. Anahtar nokta veritabanına bağlanmış bileşenler olmalı. Bu veritabanı master veritabanı olabilir.

Kod: Tümünü seç

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('EXEC sp_attach_db N''SOZLUK'', N''c:\SozlukProgramYolu\SOZLUK.mdf'', N''c:\SozlukProgramYolu\SOZLUK_log.ldf''');
ADOQuery1.ExecSQL;
veya diğer yöntem ise

Kod: Tümünü seç

ADOConnection1.Execute('EXEC sp_attach_db N''SOZLUK'', N''c:\SozlukProgramYolu\SOZLUK.mdf'', N''c:\SozlukProgramYolu\SOZLUK_log.ldf''');
şeklinde olabilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
dr_ebuzer
Üye
Mesajlar: 30
Kayıt: 29 Eki 2005 08:26

Re: kurulurken sql ayarlarını almak

Mesaj gönderen dr_ebuzer »

selam arkadaşlar problemleri yavaş yavaş çözdüm sayenizde forma 1 edit yerleştirip oraya editin text olayına Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=.\sqlexpress--kodunu yazdım form create olurken adoconnection1stringini editten okuyacak şekilde ayarladım diğer attach problemlerinide
"sabanakman" kardeşimin yukarıda bahsettiği gibi hallettim yani
buraya kadar problemler tamam ancak bu programı diğer bilgisayarlarda denerken şunu farkettim genelde bilgisayarlarda arapça(yani sağdan sola)olan diller yüklü değildir ancak kullanıcı sonradan isterse denetim masasında dil seçeneklerini xp cd'si ile onu bilgisayarına kurar
1-şimdi yapmak istediğim kullanıcı programı çalıştırdığında nasıl bir kod ile arapça dili yüklümü değilmi anlıyalım ve eğer yüklü değilse onu program içerisinden nasıl bir kod ile yüklüyebiliriz

bunu çözebilirsek bir adet sorum daha olacak

yardımcı olacak arkadaşlara şimdiden teşekkür ederim
Cevapla