MS Access 2003 - Disk veya Ağ Hatası - Bir Ağ Sorunu DEĞİL - Remote App - Win 2008


-1

Windows 2008 çalışan bir terminal servisimiz var, ancak tam masaüstü olarak değil, uzak uygulamalar olarak.

"Disk veya Ağ Hatası" veren, calc.mdb olan tek bir veritabanı dosyası vardır. MS Access 2003 yüklü bir kullanıcı tarafından erişilebilirse, düzgün çalışır. Ancak, RemoteApp üzerinden erişen seyahat eden kullanıcılarımız için "Disk veya Ağ Hatası" alıyorlar.

Ben araştırdım ve hemen hemen herkes birkaç sonuca varıyor:

1. Bu bir ağ hatası.
2. Yeniden derleyin ve / veya sıkıştırın.

Kesinlikle # 1 değil çünkü ağın iyi olduğunu doğrulayabilirim.
Yeniden derledim ve başarılı olmadıkça sıkıştırdım (ve veritabanını da açabilirsiniz).

İstemci bir bilgisayardan:

A) Başka bir RemoteApp (Word, WordPad veya hatta başka bir Access DB )
B) Uzaktaki masaüstünden oturum açarken sorun yaşanmadı.
C) Veritabanını yerel olarak kurulu olan Access 2003'ten çalıştırabilir
D) Remote-App ile açarken "Disk veya Ağ Hatası" alır.

Olay günlüğü bulabileceğim herhangi bir yardımı göstermiyor. Şimdi Windows Server'daki tüm çeşitli günlüklerde, belki başka bir yere bakmak için? RemoteApp kurulumuyla kesinlikle ilgili görünüyor.

Yine, bu bir ağ sorunu değil! Bu aylardır devam ediyor. Bunun bir ağ sorunu olmadığını doğruladım.

Ve evet, şu andaki projemi tamamladıktan sonra, bir sonraki bu yaşlanma uygulamalarını güncellemektir.

DÜZENLE: Yoruma dayalı Ek Test:

  1. Yerel bilgisayarlara rahatsız edici DB kopyalandı.
  2. TEST1'i dosya adına eklemek için yeniden adlandırıldı.
  3. Sunucuya geri kopyalandı.
  4. Yeni dosya adına bakmak için RemoteApp kısayolu güncellendi.
  5. İşe yarıyor!

Yani sadece dosyayı kopyalayıp yeniden adlandırmak işe yaramasını sağlar. Ancak, aynı adımları adı değiştirmeden denedim (temelde yerel olarak kopyalayın ve sunucuya geri kopyalayın / üzerine yazın) ve bu sorunu çözmedi.


Access'i RemoteApp olarak açarlarsa ve söz konusu DB'yi yüklerlerse, hatayı alıyorlar mı? Bu sırada hangi noktada bu hatayı alıyorlar? Söz konusu DB, başka bir DB'ye veya dosyalara referans veriyor mu? Herhangi bir saklı yordam veya tetikleyici bu DB'de kurulum yapıyor mu?
Ƭᴇcʜιᴇ007

Evet, sunucuya bağlandıktan sonra dosyayı Access'ten açarlarsa hata oluşur. Veritabanı yüklenirken gerçekleşiyor gibi görünüyor. Bu veritabanında herhangi bir bağlantılı veritabanı yoktur ve başka bir veritabanına da bağlanmamaktadır. Ancak buna bağlanan ve bundan bilgi çeken başka bir MS Access 2003 veritabanı var (VBA aracılığıyla). Bu birkaç ay önce kuruldu ve biz bu değişikliği yapmadan önce bu sorun vardı.
KingOfAllTrades

Veritabanında tetikleyici ya da yabancı endeks olmadığından emin misin? Bu DB'de VBA olmadığına, özellikle AutoExec'te (yüke yüklenen) bir şey olduğundan emin misiniz? Verileri dışa aktarır ve yeni bir DB'ye aktarırsanız, DB beklendiği gibi açılıyor mu?
Ƭᴇcʜιᴇ007

Orada VBA var. VBA kodu olmadan test etmek üzereyken sadece bir kopya yaptım ve bu kopya çalışıyor. Soruya ekleyeceğim.
KingOfAllTrades

@ Techie007 Bu testin sonuçları ile güncellenmiş soruyu görün. Ayrıca otomatik çalıştırmada kod yoktur. Bunun sadece iki işlemi başlatmak için iki düğmeli bir formu var. Belli ki VBA kodları var.
KingOfAllTrades

Yanıtlar:


0

Yeni bir 2008 R2 sunucusu oluşturduktan ve 2005 Veritabanının yedeğini geri yükledikten sonra bu hatayla karşılaştım ve yayınladım.

Daha sonra tüm kullanıcıları, bakım planlarını vb. İçeri aktarıyorum, ancak varsayılan dili ABD İngilizcesi'nden İngiliz İngilizcesi olarak değiştirmeyi unuttuğum için bu hatayı aldım.

Göç ettikten sonra yapmak zorunda kaldım:

  1. istatistikleri ile yenilemek: exec sp_udatatestats
  2. varsayılan dili şu şekilde ayarla: EXEC sp_configure 'default language', 23
  3. Aşağıdaki kodu kullanarak (onu bağlamalıyım ama nereden aldığımı unuttum) tüm kullanıcıların dilini değiştirdim

    l tablosu için ilan (sqlCmd nvarchar (maks)) @sqlCmd bildirimi nvarchar (maks) @l ekle 'alter login' + quotename (loginname) + 'ile default_language = British;' dbname = 'XXXXXXXXXXXX' ifadesinin sys.syslogins

    ilk 1'i seçin @sqlCmd = sqlcmd @l while (@sqlCmd boş değil) başla     @sqlCmd yazdır     exec (@sqlCmd)     güncelleme @ set sqlCmd = null burada @ sqlCmd = sqlCmd     @sqlCmd = null ayarla
    top 1'i seçin @sqlCmd = sqlcmd @l arasından, sqlCmd boş değil. son

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.