SQL Server LocalDB örneklerinin klasörü varsayılan konumundan nasıl taşınır?


13

Birden fazla hata alıyorumLocalDB ( başlatma hatası , SQL Server Management Studio'dan DB oluşturamıyorum ve ayrıca bir yedeklemeyi geri yüklemeye çalışırken birden fazla sorun ) ve bulduğum düzeltmelerin hiçbiri bir şeylere yardımcı olmuyor. Bana öyle geliyor ki tüm hataların kökleri doğru ayarlanmamış.

Şimdi basit bir DDL tablo oluşturma komut dosyası SQL Server Management Studio'dan iyi çalışıyor ve kullanıcı hesabımın klasörünün ( burada açıklandığı gibi ) kökünde veritabanı oluşturur . Ancak Örnekler klasörü ( SQL Server Express'i Gelişmiş HizmetlerleD:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances yüklerken olmasına rağmen , DATA klasörünü başka bir konumda belirledim - yalnızca standart SQL Server Express dosyalarının saklandığı, ancak örneklerin saklanmadığı yerlerde ) izinlerle ilgili olarak (hesabın aksine) sorunlu görünüyor Bu nedenle ve DB dosyalarımı projelerim arasında bir konuma sahip olmak için, Instances klasörünü başka bir yere taşımak istiyorum. Mümkün mü? Karşılık gelen bir kayıt defteri girdisi bile bulamadım..mdfLocalDB

Ben SQL Server Express 2012 ve aynı sürümün SSMS kullanıyorum (son güncellemeler yüklü).

Herhangi bir yardım mutluluk duyacağız.

Düzenleme: KookieMonster daha önce sözü edilen Veritabanı Ayarları sayfası benim için bir hata attı, düzenleyemedi veya orada herhangi bir yapılandırma göremedi. Windows Update'in güncelleştirmeleri yeniden denetlemesine izin verdim ve SQL Server Express için yüklü olmayan bazı güncelleştirmeler vardı (daha önce yüklemek için her şeyi seçtiğimden eminim), bu yüzden yükledim. Bu, ayarlar sayfasına gitmemi mümkün kıldı.

LocalDB örneğinin kök klasörünü başka bir yere kurmaya çalıştım, ancak denediğim her klasör için erişim engellendi hatası alıyorum

Alter, 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase' Ayarları için başarısız oldu. (Microsoft.SqlServer.smo)

------------------------------ EK BİLGİ:

Transact-SQL deyimi veya toplu iş yürütülürken kural dışı durum oluştu. (Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx (), 'Erişim reddedildi' hatası 5 döndürdü. (Microsoft SQL Server, Hata: 22002)

Klasör Herkes için Tam denetim ayarlanmış olsa bile bunu alıyorum! Çalışan tek klasörü daha da eğlendirmek, varsayılan olarak ayarlanan (kullanıcı hesabının kökü) özel izinlere sahip değildir - sadece benim kullanıcım olanlara (ayarlamaya çalıştığım diğer klasörler gibi). Aslında bu, tüm LocalDB veritabanlarımdaki dosyaların hesabımın kök klasörüne kaydedildiği anlamına gelir.


1
Bir veritabanı oluşturup dosyaları varsayılanları almak yerine açıkça belirli bir konuma ayarladığınızda ne olur?
Aaron Bertrand

1
Cevabın için teşekkürler! Bu işe yarar (eğer proje klasörüm gibi uygun bir klasör seçersem) ama yolu her seferinde belirtmek çok sakıncalıdır. Varsayılanları değiştirmenin bir yolu olmadığına inanamıyorum.
Piedone

Sunucu düğümüne gittiğinizde, sağ tıklama, özellikler, veritabanı parametreleri ve varsayılan konumu değiştirdiğinizde ne olur? Değerler yükleme sırasında ayarladığınız değerler mi yoksa başka bir şey mi?
KookieMonster

Ben de aynı problemi yaşıyorum. Klasör izinlerini değiştirmenin bir etkisi olmadığının sebebi, bunun aslında kayıt defteri ile ilgili bir kayıt defteri sorunu oluşturduğunu (son bölüme bakın: RegCreateKeyEx'e bakın). Ne yazık ki hangi anahtarı yaratmak istediğini anlayamıyorum.
daveaglick

Yanıtlar:


13

Yukarıdaki yorumuma bakın. Kayıt defteri erişimini izlemek için Process Monitor kullandım ve yazmaya çalışırken Erişim Reddedildiğini buldum:

3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write

Kayıt Defteri Düzenleyicisi'ni açıp Herkese tam erişim sağlayarak bu sorunu çözdüm HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer. Sonra varsayılan konumu değiştirdim ve tamamlandığında Herkes erişimini kaldırdım. Bu, daha önce orada olmayan aşağıdaki ekstra anahtarları yaptı:

DefaultData

DefaultLog

YedekDizini


Teşekkür ederim. Sonunda farklı bir rotaya gittim, bu yüzden bunun benim için nasıl çalışacağını test edemiyorum.
Mart'ta Piedone

3
Burada önerdiğiniz çözümü tam olarak denedim ve evet, kayıt defterinde bahsettiğiniz ekstraları aldım. Yine de bu, yerel veritabanımın geçerli özellik değerlerini geçersiz kılmaz veya değiştirmez. Kayıt defteri, 3 konumun tümü için istenen değerleri gösterir, ancak SMSS'de yine de yüklemeye göre varsayılan konumlar vardır. MS sql server compact 3.5 SP 1 kullanmak böyle bir davranışın nedeni olabilir mi?
user3840527

2
Bu hata hakkında herhangi bir bilgi bulabildiğim tek yer . somedave, evet, bu reg anahtarının izinlerini değiştirmek hatayı ortadan kaldırır, ancak user3840527'nin söylediği gibi, SSMS, çıktıktan ve yeniden açtıktan sonra bile orijinal varsayılan konumlara sahiptir.
Yann Duran

@Piedone, reg key yöntemini kullanmak yerine ne yaptığınızı açıklayabilir misiniz? Veya yöntemi açıklayan bir yere mi işaret ediyorsunuz? Teşekkürler
Yann Duran

1
Hata gider, ancak konum değişmez
Adil Mammadov
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.