MSSQL 2005 Attach Sorunu

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
MyOsM
Üye
Mesajlar: 46
Kayıt: 20 Tem 2005 11:43
Konum: İzmir

MSSQL 2005 Attach Sorunu

Mesaj gönderen MyOsM »

SA. Herkese kolay gelsin

MSSQL 2005 ve Delphi 2007 Platformunda geliştirdiğim bir projem var.
Veritabanı dosyası ve log dosyası "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data" adresi altında yer alıyor.

bu dosyaları ben proje dosyalarımın içersinde data isimli bir klasörde taşımak istiyorum, Bunun için aşağıdaki işlemleri yaptım ama bir sorunla karşılaşıyorum.

İlk önce ilgili veritabanı detach ettim,

sonra MSSQL Servisi Stop ettim,

sonra mdf ve ldf uzantılı dosyaları olmasını istediğim yere kopyaladım

ve managerden attach'tan ilgili dosyları seçtim tamam dediğim zaman aşağıdaki hatayı alıyorum

veritabanı dosyalarını "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data" bu adrese alıp tekrar atach yaptığımda sorun olmuyor ....

Kod: Tümünü seç

TITLE: Microsoft SQL Server Management Studio Express
------------------------------

Attach database failed for Server 'OSMAN\SQLEXPRESS'.  (Microsoft.SqlServer.Express.Smo)

------------------------------
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.Express.ConnectionInfo)

------------------------------

Unable to open the physical file "D:\program\data\data.mdf". Operating system error 5: "5(Erişim engellendi.)". (Microsoft SQL Server, Error: 5120)


Saygılarımla ....[/img]
Gecenin en karanlık anı sabahın en yakın olduğu andır.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Attach kodunuzda yolu belirttiniz mi? Çalışmayan kodu yazabilir misiniz?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
MyOsM
Üye
Mesajlar: 46
Kayıt: 20 Tem 2005 11:43
Konum: İzmir

Mesaj gönderen MyOsM »

sa Atach kodu aşağıda

Kod: Tümünü seç

USE [master]
GO
CREATE DATABASE [musdata] ON 
( FILENAME = N'C:\data\data.mdf' ),
( FILENAME = N'C:\data\data_log.ldf' )
 FOR ATTACH
GO
if not exists (select name from master.sys.databases sd where name = N'musdata' and SUSER_SNAME(sd.owner_sid) = SUSER_SNAME() ) EXEC [musdata].dbo.sp_changedbowner @loginame=N'sa', @map=false
GO
İlginize teşekkürler
Gecenin en karanlık anı sabahın en yakın olduğu andır.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Kullandığın yapı biraz değişikmiş. SQL 2005 yapısı hakkında pek bir bilgim yoktur ama ...from master.sys.databases... koduna takıldım. SQL 2000'de böyle bir yapı yoktur. Ayrıca direk sp_attach_db 'musdata', 'C:\data\data.mdf' , 'C:\data\data_log.ldf' kodunu kullanarak 2000'de olduğu gibi attach edemez misin?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
MyOsM
Üye
Mesajlar: 46
Kayıt: 20 Tem 2005 11:43
Konum: İzmir

Mesaj gönderen MyOsM »

MSDE ile yaptığın bi attach'ın script gönderme şansın var mı?

daha yeni başladım MSSQL FB kullanıyorum ben bir proje için MSSQL istediler Kullanıcı sınırının olmamasından dolayı MSSQL 2005 seçtim.

yardımlarınız için teşekkür ederim
Gecenin en karanlık anı sabahın en yakın olduğu andır.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Yukarıda da yazdığım gibi. Yazdığın koda göre kendimce

Kod: Tümünü seç

EXEC sp_attach_db 'musdata', 'C:\data\data.mdf' , 'C:\data\data_log.ldf'
kodu yeterli olacak kanaatindeyim.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
MyOsM
Üye
Mesajlar: 46
Kayıt: 20 Tem 2005 11:43
Konum: İzmir

Mesaj gönderen MyOsM »

Kod: Tümünü seç

EXEC sp_attach_db 'musdata', 'C:\data\data.mdf' , 'C:\data\data_log.ldf'
yukardaki işlem sonucunda yine aynı hatayı alıyorum

Kod: Tümünü seç

Msg 5120, Level 16, State 101, Line 1
Unable to open the physical file "C:\data\data.mdf". Operating system error 5: "5(Erişim engellendi.)".

Parse işleminde başarılı diyor ama execute dediğim de bu geliyor.

Gecenin en karanlık anı sabahın en yakın olduğu andır.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Dosya kullanımda hatası geldiğine göre gözden geçirmen gereken bazı hususlar var. Mesela ilk aklıma gelen başka bir isimde attachlenmiş olabilir bu dosyalar.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
MyOsM
Üye
Mesajlar: 46
Kayıt: 20 Tem 2005 11:43
Konum: İzmir

Mesaj gönderen MyOsM »

Sa.
Yardımların için çok teşekkür ederim. Manager tarafından gerçekleştiremedim, bu işlemi ama Delphi tarafında hallettim sanırım


AdoConnection Master bağlandım
query ile de

Kod: Tümünü seç

EXEC sp_attach_db @dbname = N'musdata', 
   @filename1 = N'c:\Data\data.mdf', 
   @filename2 = N'c:\Data\data_log.ldf'
Sorunu Çözdü Çok Teşekkür ederim
Gecenin en karanlık anı sabahın en yakın olduğu andır.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Olduğuna sevindim.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
hasan
Üye
Mesajlar: 129
Kayıt: 16 Oca 2004 10:01
Konum: Bursa
İletişim:

Re: MSSQL 2005 Attach Sorunu

Mesaj gönderen hasan »

arkadaşlar ben anlamadım bu olayı yaww :(
Şimdi hiç bir SQL Server versiyonu yüklü olmayan bir makineye MSDE kurulum yapıldığında sanırım Service name ismini makine ismi ile aynı yapıyor , ben dataları c:\Prog\Data klasörü altında tuutmak istiyorum ama MSDE kurduktan sonra bu .mdf datalarımı nasıl bu Çalışan Servera tanıtacağım , elimde bir .udl dosyası mevcut orda çalışan SQL Server görünüyor ve onun altındaki standart model DB leri felan da görünüyor.Ama işte sorun kendi .mdf DB lerimi nasıl attach edeceğim lütfen acele cevap , programın setupını çıkarmam lazım bugün.tşk ederim ilginize...
::::::::www.BursaEmlak.com:::::::::
Emlak ve Emlakçının buluşma Noktası
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: MSSQL 2005 Attach Sorunu

Mesaj gönderen sabanakman »

SQL Server kurulduğunda hizmet adı MSSQLSERVER'dır. Eğer instancename ile yüklenmişse mesela TEST adı altında o zaman hizmet adı MSSQL$TEST olacaktır. Bu bilgilerin veritabanına ADO ile bağlantı yaparken hiç bir faydası yoktur.

Projene ait bir .mdf dosyası muhakkak vardır. Eğer yoksa o zaman kodlarla .mdf dosyası oluşturman gerekiyor.

Önce master veritabanına bağlan.
Eğer .mdf dosyan varsa (kayıtları olmayan boş bir veri tabanı dosyası)
sp_attach_db komutu ile sql'e kaydet ve artık ondan sonra o veritabanına bağlan
Eğer böyle bir dosyan yok ve SQL komutları ile veritabanı oluşturuyorsan
create database, create table vs. vs. kodları ile veritabanını oluşturabilirsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
hasan
Üye
Mesajlar: 129
Kayıt: 16 Oca 2004 10:01
Konum: Bursa
İletişim:

Re: MSSQL 2005 Attach Sorunu

Mesaj gönderen hasan »

1- evet dediğin gibi ayrıyeten harici bir exe ile işi yaptırıyorum sanırım olcak , ama Vista kurulu bir makinede bu küçük program dbrtl70.bpl , rtl70.bpl , vcl70.bpl dosyalarını istiyor ve açmıyor , bunu nasıl çözebilirim , kendi makinemde sorun yok delphi kurulu olduğu için.
2- Ayrıca hocam bir makale var Inno Setup ve MSDE diye , MSDE kurulumunun içine bir function ile bu kodları ekelsekte kurulumun en sonunda da bunları yaptırsak olur mu sence ? Db attach veya .sql dosyalarını gömerek, bu konuda ne düşünüyosunuz ?

ayrıyeten yardımın için çooookk teşekkür ederim.
::::::::www.BursaEmlak.com:::::::::
Emlak ve Emlakçının buluşma Noktası
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: MSSQL 2005 Attach Sorunu

Mesaj gönderen sabanakman »

1-.bpl hataları veren projenizi açın ve Project-Options-Packages menü sayfasında bulunan Build with runtime packages seçeneğindeki işareti kaldırın. Eğer bu seçenek işaretli ise o zaman projede kullandığınız bileşenler adına .exe'nin çalışması için gerekli olan bu dosyaları da dağıtmanız gerekiyor. En temizi bu işareti kaldırıp, .exe dosyanın tek başına çalışmasını sağlamak.
2-viewtopic.php?f=19&t=22430'de msde kurulumunu inno setup ile yapımı anlatıldı fakat sen kendi projen için ayrı bir kurulum yapabilirsin. Yapabilirsen bu kurulumun içine de yerleştirebilirsin ama tavsiyem ayırman olacak. Projenin kurulumunu hazırlarken en sonunda proje veritabanını sisteme kayıt ettirecek programı çalıştırman yeterli olacak. İster inno setup olsun ister diğer kurulumlar olsun bu gibi kurulumun arkasından şunu çalıştır gibi bir ayar muhakkak vardır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla