sql server data ekleme , dosya erişim problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

sql server data ekleme , dosya erişim problemi

Mesaj gönderen mustafasoy »

selam , hazırlamış olduğum proje için otomatik kurulum yapmayı planlıyorum,izlemiş olduğum yöntem;
1.resource olarak mdf ve ldf dosyalarını setup.exe içerisine ekliyorum
2.sql server bağlantısını yaptıktan sonra resource içerisinden belirlemiş olduğum klasore cıkarıyorum ve
EXEC sp_attach_db @dbname = N'REPORTDB',@filename1 =N'C:\RS\DATA\REPORTDB.MDF',@filename2 = N'C:\RS\DATA\REPORTDB.LDF'; komutu ile attach etmeye çalışıyorum ancak erişim engellendi hatası veriyor , dosyalara user yada everyone yetkisi verirsem sorun olmadan ekliyor ancak bunu otomatik olarak yapmak gerekecek bunun için nasıl bir yol izlemeliyim?
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: sql server data ekleme , dosya erişim problemi

Mesaj gönderen mustafasoy »

aşağıdaki function ile işimi çözdüm , umarım başka arkadaşların işine yarar.

Kod: Tümünü seç

function FileSetAccess(const FileName, UserName: string; dwAccess : DWord) : Boolean;
var
 dwSize, dwError : DWord;
 bDaclPresent    : Bool;
 bDaclDefaulted  : Bool;
 ea              : EXPLICIT_ACCESS;
 OldAcl          : PACL;
 NewAcl          : PACL;
 psd             : PSECURITY_DESCRIPTOR;
 sd              : SECURITY_DESCRIPTOR;
begin
 Result := False; psd := nil; NewAcl := nil;
 if not GetFileSecurity(PChar(FileName), DACL_SECURITY_INFORMATION, Pointer(1),
           0, dwSize) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then try
   psd := HeapAlloc(GetProcessHeap, 8, dwSize);
   if psd <> nil then begin
     BuildExplicitAccessWithName(@ea, PChar(UserName), dwAccess,
                                 SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT{NO_INHERITANCE});
     Result := GetFileSecurity(PChar(FileName), DACL_SECURITY_INFORMATION,
                               psd, dwSize, dwSize) and
        GetSecurityDescriptorDacl(psd, bDaclPresent, OldAcl, bDaclDefaulted) and
        (SetEntriesInAcl(1, @ea, OldAcl, NewAcl) = ERROR_SUCCESS) and
        InitializeSecurityDescriptor(@sd, SECURITY_DESCRIPTOR_REVISION) and
        SetSecurityDescriptorDacl(@sd, True, NewAcl, False) and
        SetFileSecurity(PChar(FileName), DACL_SECURITY_INFORMATION, @sd);
   end
 finally
   dwError := GetLastError;
   if NewAcl <> nil then
     LocalFree(HLocal(NewAcl));
   if psd <> nil then
     HeapFree(GetProcessHeap, 0, psd);
   SetLastError(dwError)
 end
end;
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: sql server data ekleme , dosya erişim problemi

Mesaj gönderen mustafasoy »

unutmadan uses kısmına AccCtrl, AclApi eklenmelidir.
kullanımı ise

Kod: Tümünü seç

FileSetAccess('c:\rs\data\REPORTDB.MDF','Everyone',GENERIC_ALL);
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: sql server data ekleme , dosya erişim problemi

Mesaj gönderen ertank »

Farklı SQL server sürümlerinde sorun çıkmasın?
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: sql server data ekleme , dosya erişim problemi

Mesaj gönderen mustafasoy »

potansiyel müşterilerimde minimum 2012 bulunmakta birkaç deneme yaptım çalışıyor , dolu tarafından baktığımda sorun çözülmüş oldu yinede uyarı için teşekkürler , birkaç denem daha yapayım
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: sql server data ekleme , dosya erişim problemi

Mesaj gönderen ertank »

Mümkünse eski versiyonlar ile deneme yapmakta fayda var. Sorun çıkması halinde program dahilinde SQL scriptleri ve başlangıç insert scriptleri ile dağıtım yapıp bunları ilgili SQL server üzerinde çalıştırmanızı tavsiye edebilirim. Aşağıda basitçe veri türü format değişiklikleri tablosu var. Hangi versiyonda değişiklik yapıldığı belirtiliyor.

8 = SQL Server 2000
9 = SQL Server 2005
10 = SQL Server 2008
11 = SQL Server 2012
Cevapla