Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, PolyBase için yaygın hata senaryoları ve çözümleri içerir.
PolyBase'i izleme ve sorun giderme hakkında daha fazla bilgi için bkz. PolyBase'i izleme ve sorunlarını giderme.
Windows ve Linux'taki yaygın PolyBase günlük dosyası konumları için bkz. PolyBase'i izleme ve sorunlarını giderme.
Hata iletileri ve olası çözümler
SQL Server 2022 güncelleştirmesi geçersiz sütun adı (büyük/küçük harfe duyarlı) nedeniyle başarısız oldu
PolyBase özelliği yüklü olan bir sunucuya SQL Server toplu güncelleştirme yüklemesi uygulanırken ve büyük/küçük harfe duyarlı harmanlama kullanıldığında bu hata oluşabilir; bildirilen hata yükseltme iletisi aşağıdaki gibidir:
Örnek hata iletisi: Error: 912, Severity: 21, State: 2. Script level upgrade for database 'master' failed because upgrade step 'polybase_database_upgrade.sql' encountered error 200, state 7, severity 25. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.
Neden:
Yükseltme işlemi sırasında, SQL Server betiği büyük/küçük harf duyarlılığı nedeniyle başarıyla tamamlanamaz.
Çözüm: Bu sorun, gelecek toplu güncelleştirmede kalıcı olarak düzeltilecektir.
Geçici Çözüm:
- İzleme bayrağı 902'yi etkinleştirin.
- SQL Server'ı başlatın.
- 'DWConfiguration' veritabanının CS (büyük/küçük harfe duyarlı) olan harmanlamasını CI (büyük/küçük harfe duyarlı değil) olarak değiştirin.
- Yükseltmeyi yeniden çalıştırın.
- İzleme bayrağı 902'yi devre dışı bırakın.
- SQL Server'i yeniden başlatın.
- 'DWConfiguration' veritabanının harmanlamasını, CI (büyük/küçük harfe duyarsız) yerine CS (büyük/küçük harfe duyarlı) olarak eski ayarına geri çevirin.
İzleme bayraklarına alternatif olarak, sorunun toplu güncelleştirmeden önce oluşmasını önlemek için 'DWConfiguration' veritabanının büyük/küçük harfe duyarlı (CS) harmanlama kullanıp kullanmadiğini denetleyin. Büyük/küçük harfe duyarsız (CI) sıralama olarak değiştirin, toplu güncelleştirmeyi uygulayın ve ardından orijinal haline geri döndürün.
Hata: "100001; Sorgu planı oluşturulamadı"
SQL Server veritabanı altyapısına en az Toplu Güncelleştirme 8 (15.0.4073) düzeltmesi uygulandığında ve ancak PolyBase özelliği aynı sürüme güncelleştirilmemişse, "Sorgu planı oluşturulamadı" hatası oluşabilir. PolyBase özelliği mevcut bir SQL Server örneğine eklenirken bu durum oluşabilir. Daha fazla bilgi için bkz . PolyBase hatası - 100001; Sorgu planı oluşturulamadı.
Her zaman PolyBase özelliğini aynı sürüm düzeyine getirerek kurulumunu güncelleyin. Gerektiğinde hizmet paketlerini (SP), toplu güncelleştirmeleri (CU) ve/veya genel dağıtım sürümlerini (GDR) yükleyin. PolyBase sürümünü belirlemek için bkz. SQL Server'ın ve bileşenlerininsürümünü, sürümünü ve güncelleştirme düzeyini belirleme.
Hizmet hesabı değişikliği
Örnek hata iletisi:
107035; [ETKİALANI\kullanıcı] [PdwDataMovementAccess] grubunun üyesi olmadığından Dms yetkilendirmesi başarısız oldu
107017; Geçersiz DMS denetim üst bilgisi:
Bu hata büyük olasılıkla PolyBase hizmet hesabının değiştirilmesinden kaynaklanır. PolyBase Altyapısı ve PolyBase Veri Taşıma hizmetinin hizmet hesaplarını değiştirmek için PolyBase özelliğini kaldırın ve yeniden yükleyin.
Veri taşıma hizmeti izin hataları
Veri taşıma hizmetiyle ilgili izin sorunlarını giderme ve çözme hakkında daha fazla bilgi için bkz. PolyBase Hizmet Hesabı İzinleri ve Eksik Olduğunda Gözlemlenen Yaygın Hatalar.
Windows kimlik doğrulaması hatası
Windows kimlik doğrulamasındaki bir hatayla ilgili sorun giderme ve izin sorunlarını çözme hakkında daha fazla bilgi için bkz. PolyBase Hizmet Hesabı İzinleri ve Eksik Olduğunda Gözlemlenen Yaygın Hatalar.
"Uzak Sorgu" sorgusu yürütülemiyor
Örnek hata iletisi:
Msg 7320, Düzey 16, Durum 110, Satır 14
"(null)" bağlı sunucusu için OLE DB sağlayıcısı "SQLNCLI11" için "Uzak Sorgu" sorgusu yürütülemiyor. Sorgu durduruldu-- dış kaynaktan okunurken en fazla reddetme eşiğine (0 satır) ulaşıldı: toplam 1 satırın dışında 1 satır reddedildi. (/nation/sensors.ldjson.txt)Sütun sıralı: 0, Beklenen veri türü: INT, Sorunlu değer: {"id":"S2740036465E2B","time":"2016-02-26T16:59:02.9300000Z","temp":23.3,"hum":0.77,"wind":17,"press":1032,"loc":[-76.90914996169623,38.8929314364726]} (Sütun Dönüştürme Hatası), Hata: NVARCHAR veri türü INT'ye dönüştürülürken hata oluştu.
Bu hatanın türevleri olabileceğini unutmayın. İlk reddedilen dosyanın adı, hatalı veri türleri veya değerleriyle birlikte SQL Server Management Studio'da (SSMS) gösterilir.
Olası Neden:
Bu hatanın olmasının nedeni, her dosyanın farklı bir şemaya sahip olmasıdır. Bir dizine işaret edildiğinde PolyBase dış tablosu DDL, bu dizindeki tüm dosyaları özyinelemeli olarak okur. Bir sütun veya veri türü uyuşmazlığı oluştuğunda, bu hata SSMS'de görülebilir.
Olası Çözüm:
Her tablonun verileri tek bir dosyadan oluşuyorsa, dış dosyaların dizininin öneki olan LOCATION bölümündeki dosya adını kullanın.
Tablo başına birden çok dosya varsa, her dosya kümesini Azure Blob Depolama'da farklı dizinlere yerleştirin. LOCATION'yi belirli bir dosya yerine dizine işaret edin. Bu çözüm önerilir.
Example:
Create External Table foo
(col1 int)WITH (LOCATION='/bar/foobar.txt',DATA_SOURCE…); OR
Create External Table foo
(col1 int) WITH (LOCATION = '/bar/', DATA_SOURCE…);
Uyarı
SQL Server Native Client (SNAC) ile birlikte gönderilmez:
- SQL Server 2022 (16.x) ve sonraki sürümleri
- SQL Server Management Studio 19 ve sonraki sürümleri
YENI uygulama geliştirme için SQL Server Yerel İstemcisi (SQLNCLI veya SQLNCLI11) ve SQL Server için eski Microsoft OLE DB Sağlayıcısı (SQLOLEDB) önerilmez.
Yeni projeler için aşağıdaki sürücülerden birini kullanın:
SQL Server Veritabanı Altyapısı'nın (sürüm 2012 ile 2019 arasında) bir bileşeni olarak gelen SQLNCLI için, Destek Yaşam Döngüsü özel durumukonusuna bakın.
Kerberos desteği
SQL Server desteklenen bir Hadoop Kümesine erişecek şekilde yapılandırılmıştır. Hadoop Kümesinde Kerberos güvenliği zorunlu tutulmaz.
Dış tablodan seçildiğinde aşağıdaki hata döndürülüyor:
İleti 105019, Düzey 16, Durum 1, Satır 55
EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_Connect çağrısında Java özel durumu oluştu: Hata [LoginClass örneği oluşturulamadı] dış dosyaya erişilirken oluştu.'
Msg 7320, Düzey 16, Durum 110, Satır 55
"(null)" bağlı sunucusu için OLE DB sağlayıcısı "SQLNCLI11" için "Uzak Sorgu" sorgusu yürütülemiyor. EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_Connect çağrısında Java özel durumu oluştu: Hata [LoginClass örneği oluşturulamadı] dış dosyaya erişilirken oluştu.'
DWEngine Sunucu günlüğünün sorgusu aşağıdaki hatayı gösterir:
[İş Parçacığı:16432] [EngineInstrumentation:EngineQueryErrorEvent] (Hata, Yüksek):
EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_Connect çağrısında java özel durumu oluştu: Dış dosyaya erişilirken [com.microsoft.polybase.client.KerberosSecureLogin] hatası oluştu.' Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_Connect çağrısında java özel durumu oluştu: Dış dosyaya erişilirken [com.microsoft.polybase.client.KerberosSecureLogin] hatası oluştu.' >--- Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsAccessException: HdfsBridge_Connect çağrısında ortaya çıkan Java özel durumu: Dış dosyaya erişilirken [com.microsoft.polybase.client.KerberosSecureLogin] hatası oluştu.
Olası Neden:
Hadoop Kümesinde Kerberos etkin değildir, ancak Kerberos güvenliği core-site.xml, yarn-site.xmlveya Program Files\Microsoft SQL Server\MSSQL13 altında varsayılan olarak bulunan hdfs-site.xml etkindir. MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf. Linux'ta dosyalar varsayılan olarak /var/opt/mssql/binn/polybase/hadoop/conf/ konumunda bulunur.
Olası Çözüm:
Yukarıda bahsedilen dosyalardan Kerberos güvenlik bilgilerini yorum satırı haline getirin.
PolyBase ve Kerberos sorunlarını giderme hakkında daha fazla bilgi için bkz. PolyBase Kerberos bağlantısı sorunlarını giderme.
İç sorgu işlemci hatası
Dış tabloyu sorgulamak aşağıdaki hatayı döndürür:
Msg 8680, Düzey 17, Durum 5, Satır 118
İç Sorgu İşlemcisi Hatası: Sorgu işlemcisi, uzak sorgu aşaması işlenirken beklenmeyen bir hatayla karşılaştı.
DWEngine sunucu günlüğü aşağıdaki iletileri içerir:
[İş Parçacığı:5216] [ControlNodeMessenger:ErrorEvent] (Hata, Yüksek): ***** DMS Sistemi'nin bağlantısı kesilmiş düğümler var:
[İş Parçacığı:5216] [ControlNodeMessenger:ErrorEvent] (Hata, Yüksek): ***** DMS Sistemi'nin bağlantısı kesilmiş düğümler var:
[İş Parçacığı:5216] [ControlNodeMessenger:ErrorEvent] (Hata, Yüksek): ***** DMS Sistemi düğümlerin bağlantısını kesti:
Olası Neden:
Bu hatanın nedeni, PolyBase yapılandırıldıktan sonra SQL Server'ın yeniden başlatılmamış olması olabilir.
Olası Çözüm:
SQL Server'i yeniden başlatın. Yeniden başlatmadan sonra DMS bağlantısı kesilmemiş olup olmadığını doğrulamak için DWEngine Sunucu Günlüğü'nü denetleyin.
HDFS erişimi için gereken kullanıcı
Senaryo:
SQL Server güvenli olmayan bir Hadoop kümesine bağlıdır (Kerberos etkin değildir). PolyBase, Hadoop kümesine hesaplama göndermek üzere yapılandırılmıştır.
Örnek Sorgu:
select count(*) from foo WITH (FORCE EXTERNALPUSHDOWN);
Aşağıdakine benzer bir hata iletisi döndürülür:
Msg 105019, Düzey 16, Durum 1, Satır 1
EXTERNAL TABLE erişimi dahili hata nedeniyle başarısız oldu: 'Java istisnası JobSubmitter_PollJobStatus çağrısında yükseltildi: Hata [java.net.ConnectException: big1506sql2016/172.16.1.4'ten 0.0.0.0:10020'ye yapılan aramada bağlantı istisnası: java.net.ConnectException: Bağlantı reddedildi: daha fazla bilgi yok; Daha fazla bilgi için bakınız: http://wiki.apache.org/hadoop/ConnectionRefused] dış dosyaya erişilirken meydana geldi.'
"(null)" bağlı sunucusu için OLE DB sağlayıcısı "SQLNCLI11", "Belirtilmemiş hata" iletisi döndürdü.
Msg 7421, Düzey 16, Durum 2, Satır 1
"(null)" bağlı sunucusu için "SQLNCLI11" OLE DB sağlayıcısından satır kümesi getirilemiyor. .
Hadoop Yarn Günlük Hatası:
İş kurulumu başarısız oldu: org.apache.hadoop.security.AccessControlException: İzin reddedildi: user=pdw_user, access=WRITE, inode="/user":hdfs:hdfs:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:251) at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:232) org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:176) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5525)
Olası Neden:
Kerberos devre dışı bırakıldığında, PolyBase HDFS'ye erişmek ve MapReduce işlerini göndermek için kullanıcı olarak pdw_user'ı kullanır.
Olası Çözüm:
Hadoop'ta pdw_user oluşturun ve eşleme işlemi sırasında kullanılan dizinler için yeterli izinleri verin. Ayrıca pdw_user /user/pdw_user HDFS dizininin sahibi olduğundan emin olun.
Aşağıda, giriş dizini oluşturma ve pdw_user izinleri atama örneği verilmiştir:
sudo -u hdfs hadoop fs -mkdir /user/pdw_user
sudo -u hdfs hadoop fs -chown pdw_user /user/pdw_user
Bundan sonra pdw_user /user/pdw_user dizininde okuma, yazma ve yürütme izinlerine sahip olduğundan emin olun. /tmp dizininde 777 izin olduğundan emin olun.
PolyBase ve Kerberos sorunlarını giderme hakkında daha fazla bilgi için bkz. PolyBase Kerberos bağlantısı sorunlarını giderme.
UTF-8 nedeniyle Java bellek hatası
Senaryo:
SQL Server PolyBase, Hadoop Kümesi veya Azure Blob Depolama ile ayarlanır. Herhangi bir Select sorgusu aşağıdaki hatayla başarısız olur:
Msg 106000, Düzey 16, Durum 1, Satır 1
Java yığın alanı
Olası Neden:
Geçersiz giriş Java bellek yetersizliği hatasına neden olabilir. Dosya UTF-8 biçiminde olmayabilir. DMS, satır sınırlayıcısının kodunu çözemediğinden ve Java yığın alanı hatasıyla çalıştığından dosyanın tamamını tek satır olarak okumaya çalışır.
Olası Çözüm:
PolyBase şu anda metinle ayrılmış dosyalar için UTF-8 biçimi gerektirdiğinden dosyayı UTF-8 biçimine dönüştürün.
Hadoop bağlantı yapılandırması
SQL Server PolyBase'i Azure Blob Depolama'ya bağlanacak şekilde yapılandırma, SQL Server'da aşağıdaki hata iletisini döndürür:
Msg 105019, Düzey 16, Durum 1, Satır 74
EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_Connect çağrısında java özel durumu oluştu: Dış dosyaya erişilirken [Düzen için Dosya Sistemi Yok: wasbs] hatası oluştu.'
Olası Neden:
Hadoop bağlantısı, Azure Blob depolamaya erişmek için yapılandırma değerine ayarlanmadı.
Olası Çözüm:
Hadoop bağlantısını Azure Blob Depolama'yı destekleyen bir değere (tercihen 7) ayarlayın ve SQL Server'ı yeniden başlatın. Bağlantı değerlerinin ve desteklenen türlerin listesi için bkz. PolyBase Bağlantı Yapılandırması.
Seçim Olarak Tablo Oluştur hatası
Senaryo:
SQL Server'dan CREATE EXTERNAL TABLE AS SELECT (CETAS) söz dizimi ile PolyBase kullanarak Azure Blob Depolama veya Hadoop dosya sistemine veri aktarma denemesi aşağıdaki hata iletisiyle başarısız oluyor:
Msg 156, Düzey 15, Durum 1, Satır 177
'WITH' anahtar kelimesine yakın yanlış söz dizimi.
Msg 319, Düzey 15, Durum 1, Satır 177
'with' anahtar sözcüğüne yakın yanlış söz dizimi. Bu deyim ortak bir tablo ifadesi, xmlnamespaces yan tümcesi veya değişiklik izleme bağlamı yan tümcesiyse, önceki deyim noktalı virgülle sonlandırılmalıdır.
Olası Neden:
Verileri PolyBase aracılığıyla Hadoop veya Azure Blob Depolama'ya aktarırken, CREATE EXTERNAL TABLE komutunda tanımlanan sütun adları (meta veriler) değil, yalnızca veriler dışarı aktarılır.
Olası Çözüm:
Önce dış tabloyu oluşturun ve ardından dış konuma dışarı aktarmak için INSERT INTO SELECT kullanın. Kod örneği için bkz . PolyBase sorgu senaryoları.
Azure Blob Depolama'dan Dış Tablo oluşturma başarısız oluyor
Senaryo:
Ayrılmış SQL havuzu (eski adıYLA SQL DW), Azure Blob Depolama'dan verileri içeri aktaracak şekilde ayarlanır. Dış tablo oluşturma aşağıdaki mesajla başarısız oluyor.
İleti 105019, Düzey 16, Durum 1, Satır 34
Dış TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_IsDirExist çağrısında java özel durumu oluştu. Java özel durum iletisi:com.microsoft.azure.storage.StorageException: Sunucu isteğin kimliğini doğrulayamadı. Yetkilendirme üst bilgisinin değerinin imza da dahil olmak üzere doğru şekilde oluşturulduğundan emin olun.: Hata [com.microsoft.azure.storage.StorageException: Sunucu isteğin kimliğini doğrulayamadı. Yetkilendirme üst bilgisinin değerinin imza da dahil olmak üzere doğru şekilde oluşturulduğundan emin olun.] dış dosyaya erişilirken oluştu.'
Olası Neden:
Veritabanı kapsamlı kimlik bilgilerini oluşturmak için yanlış Azure depolama anahtarı kullanıldı.
Olası Çözüm:
Tüm ilgili nesneleri (yani: veri kaynağı, dosya biçimi) silin ve ardından doğru depolama anahtarıyla veritabanı kapsamlı kimlik bilgilerini yeniden oluşturun.
Kerberos yapılandırmasında büyük harf kullanımı
Senaryo:
SQL Server, Kerberos özellikli Cloudera Kümesi ile ayarlanır. Tüm yapılandırma değişikliklerinden sonra SQL Server yeniden başlatıldı. PolyBase Altyapısı ve PolyBase Veri Taşıma hizmetleri yeniden başlatıldıktan sonra çalışıyor. Aşağıdaki hata iletileri döndürülür:
İş izleyici konumu olmadan yapılandırılan Veri Kaynağı:
org.apache.hadoop.fs.FileSystem: Sağlayıcı org.apache.hadoop.fs.viewfs.ViewFileSystem örneği oluşturulamadı
İş izleyici konumuyla yapılandırılan Veri Kaynağı:
Dış dosyaya erişilirken [Kerberos bölgesi alınamıyor] hatası oluştu
Olası Neden:
"hadoop.security.authentication" özelliğinin değeri Coresite.xml dosyasında kerberos olarak belirtilmiştir.
Olası Çözüm:
Coresite.xml'deki "hadoop.security.authentication" özelliği: değer olarak KERBEROS (tümü büyük harf) olmalıdır.
PolyBase ve Kerberos sorunlarını giderme hakkında daha fazla bilgi için bkz. PolyBase Kerberos bağlantısı sorunlarını giderme.
Mapred-site.xml içinde gerekli değerler eksik
Senaryo:
SQL Server veya APS desteklenen HDP Kümesi ile ayarlanır. 'FORCE PUSHDOWN' ipucu aşağıdaki hata iletileriyle kullanıldığında başarısız olan ve itme çalışması gerektirmeyen sorgular:
Msg 7320, Düzey 16, Durum 110, Satır 35
"Bağlı sunucu '(null)' için OLE DB sağlayıcısı 'SQLNCLI11' ile 'Uzak Sorgu' sorgusu yürütülemiyor." EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'JobSubmitter_PollJobStatus çağrısında Java istisnası oluştu: Hata [org.apache.hadoop.ipc.RemoteException(java.lang.NullPointerException): java.lang.NullPointerException
org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$HSClientProtocolHandler.getTaskAttemptCompletionEvents(HistoryClientService.java:277)
at org.apache.hadoop.mapreduce.v2.api.impl.pb.service.MRClientProtocolPBServiceImpl.getTaskAttemptCompletionEvents(MRClientProtocolPBServiceImpl.java:173)
at org.apache.hadoop.yarn.proto.MRClientProtocol$MRClientProtocolService$2.callBlockingMethod(MRClientProtocol.java:283)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2127)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2123)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2121)
] dış dosyaya erişilirken oluştu.'
Olası Neden:
Mapred-site.xml ara ve bitiş sonuçlarını denetleen bazı gerekli değerler eksik.
Olası Çözüm:
Aşağıdaki özellikleri ekleyin ve SQL Server'daki mapred-site.xml dosyasında Ambari'de gösterildiği gibi doğru değerleri ilişkilendirin.
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/mr-history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/mr-history/tmp</value>
</property>
Ana bilgisayar adına göre erişimi yapılandırma
Senaryo:
SQL Server desteklenen bir Hadoop Kümesine erişecek şekilde ayarlanır. Dış tablo oluşturmak aşağıdaki hatalardan birini döndürür:
"(null)" bağlı sunucusu için OLE DB sağlayıcısı "SQLNCLI11" için "Uzak Sorgu" sorgusu çalıştırılamıyor. 110802; Bu işlemin başarısız olmasına neden olan bir iç DMS hatası oluştu. Ayrıntılar: Özel Durum: Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DmsSqlNativeException, İleti: SqlNativeBufferReader.Run, OdbcExecuteQuery'de hata: SqlState: 42000, NativeError: 8680, 'Hata çağrısı: SQLExecDirect(this-GetHstmt>(), (SQLWCHAR *)statementText, SQL_NTS), SQL dönüş kodu: -1 | SQL Hata Bilgileri: SrvrMsgState: 26, SrvrSeverity: 17, Hata <1>: ErrorMsg: [Microsoft][SQL Server için ODBC Sürücüsü 13][SQL Server]İç Sorgu İşlemcisi Hatası: Sorgu işlemcisi, uzak sorgu aşaması işlenirken beklenmeyen bir hatayla karşılaştı. | Çağrı hatası: pReadConn-ExecuteQuery>(statementText, bufferFormat) | durum: FFFF, numara: 24, aktif bağlantılar: 8', Bağlantı Dizisi: Driver={pdwodbc}; APP=RCSmall-DmsNativeReader:WAD1D16HD2001\mpdwsvc (3600)-ODBC-PoolId1433; Trusted_Connection=Evet; AutoTranslate=Hayır; Server=\.\pipe\sql\query
[İş Parçacığı:30544] [AbstractReaderWorker:ErrorEvent] (Hata, Yüksek): QueryId QID2433 PlanId 6c3a4551-e54c-4c06-a5ed-a8733edac691 StepId 7:
Blok alınamadı: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: Blok alınamadı: BP-1726738607-192.168.225.121-1443123675290:blk_1159687047_86196509 file=/user/hive/warehouse/u_data/000000_0
at Microsoft.SqlServer.DataWarehouse.DataMovement.Common.ExternalAccess.HdfsBridgeReadAccess.Read(MemoryBuffer buffer, Boolean& isDone)
at Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DataReader.ExternalMoveBufferReader.Read()
at Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.ReadAndSendData()
at Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.ExternalMoveReaderWorker.Execute(Nesne durumu)
Olası Neden:
Bu hata iletisi, Hadoop Kümesi, veri düğümlerinin IP adresini değil Yalnızca Konak adı kullanılarak küme dışından erişilebildiği bir yapılandırmada ayarlandığında gösterilebilir.
Olası Çözüm:
İstemci (SQL Server) tarafındaki hdfs-site.xml dosyasına aşağıdakileri ekleyin. Bu yapılandırma, ad düğümünü iç IP adresi yerine Hostname ile veri düğümleri için bir URI döndürmeye zorlar.
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
Klasör düzenlemesi gereksiz bellek yüküne neden olur
Senaryo:
SQL Server, çok sayıda dosya içeren bir dizinde bir PolyBase sorgusu çalıştırıyor (>dizin yolu altında özyinelemeli olarak 30.000 dosya) ve aşağıdaki hata iletilerinden biri döndürülür:
Msg 105019, Düzey 16, Durum 1, Satır 1
EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_GetFileNameByIndex çağrısında java özel durumu oluştu. Java özel durum iletisi: GC ek yük sınırı aşıldı: Dış dosyaya erişilirken [GC ek yükü sınırı aşıldı] hatası oluştu.'
Msg 105019, Düzey 16, Durum 1, Satır 1
EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'HdfsBridge_GetDirectoryFiles çağrısında java özel durumu oluştu. Java özel durum iletisi: Java yığın alanı: Dış dosyaya erişilirken [Java yığın alanı] hatası oluştu.'
Olası Neden:
Bir yolu işlerken PolyBase bu yolun altındaki tüm dosyaları numaralandırır ve dosyaları temsil etmek için kullanılan veri yapısıyla ilişkili sabit bellek yükü vardır. Çok sayıda dosyada bu ek yük fark edilebilir hale gelir ve sonunda JVM'nin kullanabileceği tüm belleği tüketebilir.
Olası Çözüm:
Her dizinin bir dosya alt kümesi içermesi için birden çok dizindeki verileri yeniden düzenleyin ve ardından sorguyu özgün yolun bir bölümünde aynı anda çalışan ve tabloları SQL Server tabloları olarak (birleştirmeden önce) oluşturan birden çok dizinde ayırın.
Örnek: Dış tablo verilerinizin şu konumda olduğunu varsayalım: Orders/file1.txt,...,file30K.txt.
Düzeni değiştirerek verilerin, Orders/yyyy/mm/dd/file1.txt dosya yollarına geleneksel bir dosya bölme yapısında yerleştirildiği hale getirin. Dış tablonuzu month(mm) veya day(dd) gibi daha düşük bir dizin yoluna işaret edin ve dosyaları parça parça SQL Server tablolarına aktarın ve sonra bunları bir tablonun parçası olarak ekleyin. Başlangıç olarak doğru dizin yapısına sahip olsanız bile, JVM belleği bitmeden bu kadar çok dosyayla çalışabilmek için 2. adımı izleyin.
Yapılandırma dosyalarında beklenmeyen karakterler
Senaryo:
yarn-site.xml, hdfs-site.xmlve diğer yapılandırma dosyalarının değiştirilmesini içeren bir Hadoop kümesiyle SQL Server veya APS ayarlama. Aşağıdaki SQL Server hata iletisi gözlemlenir:
Msg 105019, Düzey 16, Durum 1, Satır 1
Microsoft.SqlServer.DataWarehouse.Common.ErrorHandling.MppSqlException: EXTERNAL TABLE erişimi iç hata nedeniyle başarısız oldu: 'java özel durumu HdfsBridge_Connect çağrısında oluşturuldu. Java özel durum iletisi:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Geçersiz bayt 1/ 1 bayt UTF-8 dizisi.: Hata [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Geçersiz bayt 1 / 1 bayt UTF-8 dizisi.] dış dosyaya erişilirken oluştu.' --->
Olası Neden:
Bir web sitesinden veya sohbet penceresinden yapılandırma dosyalarına metin kopyalayıp yapıştırdıysanız bu durum oluşabilir. yapılandırma dosyalarında istenmeyen/yazdırılamayan karakterler olabilir.
Olası Çözüm:
Dosyaları farklı bir metin düzenleyicisinde (not defteri dışında) açın ve bu karakterleri arayın ve ortadan kaldırın. Gerekli hizmetleri yeniden başlatın.
Delta tablo sorgusu 2571 ve 16513 hatalarıyla başarısız olabilir
Senaryo:
Dış Delta tablosunu sorgularken aşağıdaki hatayla karşılaşabilirsiniz:
Msg 2571, Level 14, State 3, Line 1
User '<user>' does not have permission to run DBCC TRACEON.
Msg 16513, Level 16, State 0, Line 1
Error reading external metadata.
Olası Neden:
Delta dosyası meta veri sorgusuna eklenebilen ve yürütülmesi için sunucu rolü gerektiren QUERYTRACEON bir sysadmin sorgu ipucu olduğundan bu durum oluşabilir.
Olası Çözüm:
Bu durumda, izleme bayrağı 14073'i genel olarak etkinleştirerek sorunu çözebilirsiniz ve bu, sorgu ipucunun eklenmesini engeller.