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?
sql server data ekleme , dosya erişim problemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
sql server data ekleme , dosya erişim problemi
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
- 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
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.
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
- 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
unutmadan uses kısmına AccCtrl, AclApi eklenmelidir.
kullanımı ise
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.
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Re: sql server data ekleme , dosya erişim problemi
Farklı SQL server sürümlerinde sorun çıkmasın?
- 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
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.
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Re: sql server data ekleme , dosya erişim problemi
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
8 = SQL Server 2000
9 = SQL Server 2005
10 = SQL Server 2008
11 = SQL Server 2012