Aracılığıyla paylaş


Bağlı tabloya SQL Server veritabanına erişme "#Deleted" döndürür

Belirti

Bir veya daha fazla datetime veya datetime2 sütunu içeren ve Microsoft SQL Server veritabanına bağlı ve uyumluluk düzeyi 130 veya daha büyük olan (SQL Server 2016 uyumluluk düzeyi) Microsoft Access bağlantılı tablosu sonuçlarda #Deleted döndürür.

Bağlı tabloya kayıt değişikliklerini işlemeye çalıştığınızda, aşağıdaki "Yazma Çakışması" iletisini de alabilirsiniz:

Bu kayıt, düzenlemeye başladığınızda başka bir kullanıcı tarafından değiştirildi.

Neden

Bu sorun, datetime veya datetime2 sütunlarında kesirli saniye değerleri bulunduğundan oluşur. Microsoft SQL Server 2016'dan başlayarak datetime2 türleri için kesirli saniyelerin işlenme şekli değiştirildi. Değişiklik hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Not

SQL Server ODBC sürücüsü sunucuya veri gönderdiğinde datetime2'yi datetime2'ye dönüştürdüğünden datetime veri türü de datetime2'ye yapılan değişiklikten etkilenir.

Çözüm

Access, Microsoft 365 Uygulamaları Sürüm 2010'& başlayan yeni ve geliştirilmiş bir Tarih & Süresi Genişletilmiş veri türünü kullanıma sunuyoruz.

SQL ile söz dizimi uyumluluğunu geliştirmek ve tarih ve saat içeren kayıtlarda doğruluk ve ayrıntı düzeyini artırmak için Microsoft, Access'te DateTime2 veri türünü uyguluyor. Bu veri türü, daha iyi zaman duyarlığı (saniyeler yerine nanosaniye) olan daha büyük bir tarih aralığı (0001-01-01 ile 9999-12-31) içerir. DateTime2 veri türünü etkinleştirmek için Yeni alan>Tarih & Genişletilmiş Saat'i seçin. Daha fazla bilgi için bkz. Tarih/Saat Genişletilmiş veri türünü kullanma.

Not

Tarih & Saat Genişletilmiş veri türü, Microsoft Access'in önceki sürümleriyle uyumlu değildir. Sonuç olarak, veri türü bir yerel Access tablosu içinde uygulanırsa ve Access veritabanı bu özelliği içermeyen önceki bir sürümle kullanılırsa, veritabanını alamazsınız.

Bağlantılı/lmported Tablolar için Geçerli Veritabanı Erişimi Desteği Tarih Saat Genişletilmiş (DateTime2) Veri Türü seçeneğini kullanarak bağlama ve içeri aktarma işlemleri için Tarih & Süresi Genişletilmiş veri türünü etkinleştirebilir veya devre dışı bırakabilirsiniz. Daha fazla bilgi için bkz. Geçerli veritabanı için kullanıcı seçeneklerini ayarlama.

Access'in önceki sürümlerinde, bu sorunu geçici olarak çözmek için aşağıdaki yöntemlerden birini kullanın:

  • SQL Server veritabanının uyumluluk düzeyini 120 (SQL Server 2014 için uyumluluk düzeyi) veya daha düşük olarak değiştirin.
  • datetime ve DateTime2 sütunlarının birincil anahtarın parçası olmadığından emin olun.
  • Zaman damgası veya rowversion veri türünü kullanarak tabloya yeni bir sütun ekleyin.
  • UPDATE deyimini kullanarak datetime sütunlarından kesirli saniyeleri kaldırın.
  • Veri türünü datetime olan smalldatetime olarak değiştirin. Not: Bu, değerleri en yakın dakikaya yuvarlar.
  • Verileri düzenlemek gerekli değilse bir sorgu oluşturabilir ve RecordsetType özelliğini Snapshot olarak değiştirebilirsiniz. Bu özellik, bu sorundan etkilenmeyen salt okunur bir kayıt kümesi döndürür.

Not

SQL Server tasarım değişiklikleri yapıldığında bağlı tabloları yeniden uygulamak için Access'teki Bağlı Tablo Yöneticisi'ni kullanın.