SQL Server Geri Yükleme Hatası - Erişim Reddedildi


168

Yerel makinemde bir veritabanı oluşturdum ve tables.baktablo adı verilen bir yedekleme yaptım DataLabTables.

Bu yedeklemeyi o tablo olmadan uzaktaki bir makineye taşıdım ve geri yükleme yapmaya çalıştım, ancak aşağıdaki hatayı aldım:

System.Data.SqlClient.SqlError: 'c: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables üzerinde' RestoreContainer :: ValidateTargetForCreation 'denerken işletim sistemi' 5 (Erişim reddedildi.) 'Hatasını verdi. mdf'.

Sorun buysa, haklarımı nasıl düzeltebilirim?

Yanıtlar:


541

SQL Server 2012 ile bu sorunu yaşadım.

Yapmam gereken tek şey 'Dosyalar' bölümündeki 'Tüm dosyaları klasöre taşı' kutusunu işaretlemekti:

resim açıklamasını buraya girin

(Resmi gerçek boyutunda görmek için tıklayın)

Bu elbette doğru SQL Server sürümünün yüklü olduğunu varsayar.


13
Benim için de çalıştı. Biri nedenini açıklayabilir mi?
magnattik

3
Ayrıca bunun UI yerine komut dosyası aracılığıyla nasıl yapılabileceğini de paylaşabilir misiniz?
FMFF

9
2014'te bu sorunu yaşadım, aynı düzeltme.
DaneEdw

3
Bu aynı zamanda SQL Express'ten yedekleme ve tam SQL Server'a geri yükleme için benim için bir
çözümdü

11
Sana sarılmam gerekiyor. Şimdi ciddiyim, bir müşteriye hayır demek üzereydim, cevabınız projemi kurtardı.
Marco Scabbiolo

30

Hata mesajından, geri yükleme işleminizin hedefini ( c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf) doğrularken bir hata olduğunu söylüyor .

Kulağa şöyle geliyor:

a) bu dosya zaten var (daha önce geri yüklediğiniz için) ve SQL Server tarafından kullanılıyor

veya

b) bu ​​dizin hiç mevcut değil

Sorunuzda, bu tablo için bir yedekleme oluşturduğunuzdan bahsettiniz - SQL Server yedeklemeleri bu şekilde çalışmaz. Bu yedeklemeler her zaman tüm veritabanıdır (veya bu veritabanından en az bir veya birkaç dosya grubudur).

Benim önsezim: Bu veritabanını daha önce geri yüklediniz ve şimdi, ikinci bir geri yükleme işleminde, geri yükleme sihirbazınızdaki "Mevcut veritabanının üzerine yaz" onay kutusunu işaretlemediniz - bu nedenle mevcut dosyanın üzerine yazılamıyor ve geri yükleme başarısız oluyor.

Uzak sunucunuzda geri yüklemeyi çalıştıran kullanıcının açık bir şekilde uzak sunucudaki dizine erişimi yoktur.

C:\program files\.... korumalı bir dizindir - normal (yönetici olmayan) kullanıcıların bu dizine (ve alt dizinlerine) erişimi yoktur.

En kolay çözüm: BAK dosyanızı başka bir yere koymayı deneyin (örn. C:\temp) Ve oradan geri yükleyin


C: \ temp altında denedim ama hata hala yukarıdakiyle aynı, ilk söylediğim gibi aynı yol
cdub

SQL Management Studio'da Veritabanlarına sağ tıklıyorum, sonra Görevler -> geri
yükle

1
@marc_s thx, bu dosya için bir dizin yok gibi seçenekleri düzenlemeyi unuttum ... onun değil ... MSSQL \ DataLabTables.mdf ama bunun yerine ... MSSQL \ Veri \ DataLabTables.mdf
cdub

2
@marc_s: Yukarıda listelenen opsiyon A "ve SQL Server tarafından kullanılıyor" kısmına Minör comment: Standart çıkıyor RESTOREdosya varsa komut başarısız, hatta eğer değil (SQL Server tarafından kullanılıyor örneğin MDF / LDF dosyaları önceki ayrılmadan sonra yerinde kalır). Son birkaç hafta içinde yüzlerce DB'nin büyük bir geçişi için özel bir T-SQL tabanlı log-shipping uygulamasında karşılaştım. Hata iletisinin "erişim engellendi", daha az belirgin bir şey olabilir emin değilim.
Tao

2
Yedekleme yoluyla geri yüklemeden önce mevcut MDF / LDF dosyalarını manuel olarak yeniden adlandırmak zorunda kaldım - 'Üzerine Yaz' denetimi yeterli değildi.
Jamie Keeling

26

Aynı sorunu yaşıyordum. Yedeklemenin geri yüklenmesini gerçekleştirmek için yazma erişimine sahip olmayan hesap SQL Serverve SQL Server Agenthizmetlerimin hesap logon asaltında çalıştığı ortaya çıktı Network Services.

Oturum açmak için bu hizmetlerin her ikisini de değiştirdim Local System Accountve bu sorunu çözdü.


Bu iyi bir fikir değil. Geri yüklemeye çalıştığınız dosya konumu olan gerçek sorunu maskelediğiniz şey değildir.
declouet

2
SQL Server hizmetim, "NT Service \ MSSQLSERVER" adresinde çalışıyordu ve bu kullanıcı için benim için çalışan veri ve günlük klasörüne izinler ekledi.
Tim Newton

Güzel, bu bana yardımcı oldu
Aliaksei Zhukau

9

Son zamanlarda SQL 2008 R2 ile bu sorunla karşılaştım ve aşağıdaki çözüm benim için çalıştı:

1) Geri yüklemeye çalıştığınız adla yeni bir veritabanı oluşturun 2) Geri yüklerken, yukarıda kullandığınız adı kullanın ve seçeneklerde üzerine yazma seçeneğini tıklayın

Diğer çözümler işe yaramazsa yukarıdaki denemeyi yapabilirsiniz.


6

Yedek oluşturucunun MSSql sürüm 10 yüklü olduğu için, yedeklemeyi aldığında orijinal dosya yolunu da saklar (aynı konuma geri yükleyebilmek için), ancak sürüm 11 vardı, bu yüzden hedef dizini bulamadı.

Bu yüzden çıktı dosyası dizinini C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ olarak değiştirdim ve veritabanını başarıyla geri yükleyebildim.

Kaynak


6

Benzer bir sorun yaşadım. 2005 .bak dosyasını geri yüklemeye çalıştım ve aynı hatayı aldım. Boşuna da üzerine yazma seçeneğini seçtim.

benim çözümüm, klasöre gidip özellik ekranından erişim haklarını düzenleyerek SQL kullanıcısına söz konusu dizine erişim izni vermekti.


2

bu sorunu da birkaç saat kaybetti. olsa var:

Benim durumumda "erişim reddedildi" gerçekten "erişim reddedildi" anlamına geliyordu. mssqlstudio'nun windows aygıtımdaki kullanıcı hesabı, hata iletisinde belirtilen klasör üzerinde tam denetime sahip OLMADI. ona tam kontrol verdim. erişim artık reddedilmedi ve geri yükleme başarılı oldu.

klasör stüdyo için neden kilitlendi? kim bilir ? daha fazla cevap vermeye çalışmadan olduğu gibi başa çıkmak için yeterli soruları var.


1

Bu sorunu yaşadım, yönetici olarak oturum açtım ve sorunu düzelttim.


SSMS v17 için de çalıştım
Nandolcs

0

Başka bir senaryo, birden çok veritabanı yolunun varlığı olabilir. İlk olarak, yeni veritabanlarının depolandığı yolu not edin. Bu nedenle, yeni bir boş veritabanı oluşturup sonra yaparsanız Tasks/Restore, geri yüklemenin kullanmaya çalıştığı yolun boş veritabanının oluşturulduğu dizinle aynı olduğundan emin olun. Geri yükleme yolu yasal olsa bile, yine de erişim reddedilir şu anda çalışmakta olduğunuz yol değilse hata. Yol yasal olmadığında tespit etmek çok kolay, yol yasal olduğunda tespit etmek çok daha zor, ancak mevcut yol değil.


0

Üzgünüm çünkü yorum yapamıyorum ...

Ben de aynı problemi yaşadım. Benim durumumda sorun, eski bir sql sunucu klasöründe (sunucuda mevcut) geri yüklemeye çalışmakla ilgiliydi. Bunun nedeni, yeni bir sql sunucusunda (SQL Server 2014) geri yüklenen eski sql sunucusu yedeklemesidir (örn. SQL Server 2012 Yedekleme). Asıl mesele @marc_s yanıtından çok farklı değil. Her neyse, yalnızca hedef klasörü yeni SQL Server DATA klasörüne değiştirdim.


0

Bu en iyi çözüm olmayabilir, ancak SQL Server 2005'te geri yüklemeyi yapmaya çalışıyordum, ancak SQL Server 2008 olarak değiştirdim ve işe yaradı.


0

Böyle bir sorunum var. SQL Server klasörlerinde etkin sıkıştırmanın neden olduğu hata.


0

Frnds ... Veritabanını kısıtlarken aynı sorunu yaşadım ve her çözümü denedim ama çözülemedi. Sonra SQL 2005'i yeniden yüklemeye çalıştım ve sorun çözüldü. Aslında son kez SQL instlling sırasında özelleştirme seçeneği kontrol etmek unuttum .. Bu yükleme sırasında iki kez geliyor ve ben sadece olanlar için checkd ..


0

Benim durumumda - geri yüklediğim yerden veritabanının Yedekleme yolunu iki kez kontrol etmek zorunda kaldım. İlk kez yaptığımda daha önce farklı bir yoldan restore etmiştim. İlk kullandığım yedekleme yolunu kullanmak için Yedekleme yolunu düzelttim ve işe yaradı!


0

Veri ve Günlükler için yeni klasörler hazırladım ve düzgün çalıştı, bir klasör / dosya izni sorunu olmalı.


0

Bu, yollar doğruysa, ancak hizmet hesabı veri dosyalarının sahibi değilse de olur (yine de okuma / yazma erişimi için yeterli haklara sahiptir). Bu, dosyaların izinleri klasörün izinleriyle eşleşecek şekilde sıfırlanmışsa (tabii ki hizmet durdurulmuşken) oluşabilir.

Bu durumda en kolay çözüm, her veritabanını ayırmak ve tekrar bağlamaktır (çünkü sahibi eklerken hizmet hesabı olarak değiştirilir).


-1

Bunu dene:

Geri Yükleme DB sihirbazı penceresinde, Dosyalar sekmesine gidin, "Tüm dosyaları klasöre taşı" onay kutusunun işaretini kaldırın ve geri yükleme hedefini C: 'den başka bir sürücüye değiştirin. Ardından, düzenli geri yükleme işlemine devam edin. Başarıyla geri yüklenecek.


-1

Aynı sorun vardı ama sql server 2008 r2 kullandım, seçenekleri kontrol etmeli ve sql dosyalarını .mdf ve .ldf kaydedecek yolları doğrulamanız gerekir. Sql server kurulumunuzun yolunu seçmelisiniz. Bununla ilgili sorunumu çözdüm, umarım size yardımcı olur.


-2

Ardından, C: altındaki bir alt klasöre taşımayı deneyin, ancak kullanıcının kullandığınız klasör üzerinde tam haklara sahip olduğunu doğrulayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.