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.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Important
Machine Learning Server (eski adıyla R Server) desteği 1 Temmuz 2022'de sona erdi. Daha fazla bilgi için bkz. Machine Learning Server'a neler oluyor?
Bu makale, SQL Server Machine Learning Hizmetleri'nde sorunları çözmeye çalışırken ihtiyacınız olan verileri nasıl toplayacağınızı anlatır. Bu veriler, sorunları ister kendi başınıza ister Microsoft müşteri desteğinin yardımıyla çözüyor olun, yararlı olabilir.
SQL Server sürümü ve edisyonu
SQL Server 2016 R Services, entegre R desteğini içeren ilk SQL Server sürümüdür. SQL Server 2016 Service Pack 1 (SP1), harici betikleri çalıştırma yeteneği de dahil olmak üzere birkaç önemli iyileştirme içerir. SQL Server 2016 kullanıyorsanız, SP1 veya daha sonrasını yüklemeyi düşünmelisiniz.
SQL Server 2017 ve sonrasında Python dili entegrasyonu vardır. Önceki sürümlerde Python özellik entegrasyonu olamaz.
Kullandığınız SQL Server sürümüne bağlı olarak, bazı makine öğrenimi işlevleri mevcut olmayabilir veya sınırlı olabilir.
R dili ve araç sürümleri
Genel olarak, R Services özelliğini veya Machine Learning Services özelliğini seçtiğinizde kurulan Microsoft R sürümü, SQL Server derleme numarasıyla belirlenir. SQL Server’ı yükseltir veya buna yama uygularsanız, R bileşenlerini de yükseltmeniz veya bunlara yama uygulamanız gerekir.
Sürümlerin listesi ve R bileşen indirme bağlantıları için bkz. Makine öğrenimi bileşenlerini internet erişimi olmadan kur. İnternet erişimi olan bilgisayarlarda, gerekli R sürümü otomatik olarak tanımlanır ve yüklenir.
R Server bileşenlerini, SQL Server veritabanı motorundan ayrı olarak, bağlama olarak bilinen bir süreçle yükseltmek mümkündür. Bu nedenle, SQL Server'da R kodunu çalıştırırken kullandığınız R sürümü, hem SQL Server'ın kurulu sürümüne hem de sunucuyu en son R sürümüne taşıyıp taşımadığınıza bağlı olarak değişebilir.
R versiyonunu belirleyin
R versiyonunu belirlemenin en kolay yolu, aşağıdaki gibi bir ifadeyi çalıştırarak çalışma zamanı özelliklerini elde etmektir:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
# Transform R version properties to data.frame
OutputDataSet <- data.frame(
property_name = c("R.version", "Revo.version"),
property_value = c(R.Version()$version.string, Revo.version$version.string),
stringsAsFactors = FALSE)
# Retrieve properties like R.home, libPath & default packages
OutputDataSet <- rbind(OutputDataSet, data.frame(
property_name = c("R.home", "libPaths", "defaultPackages"),
property_value = c(R.home(), .libPaths(), paste(getOption("defaultPackages"), collapse=", ")),
stringsAsFactors = FALSE)
)
'
WITH RESULT SETS ((PropertyName nvarchar(100), PropertyValue nvarchar(4000)));
Tip
R Services çalışmıyorsa, sadece RGui'den R script kısmını çalıştırmayı deneyin.
Son çare olarak, sunucuda dosyaları açıp kurulu sürümü belirleyebilirsiniz. Bunu yapmak için, R çalışma zamanının ve mevcut çalışma dizininin konumunu almak için rlauncher.config dosyasını bulun. Dosyanın bir kopyasını oluşturup açmanızı öneririz, böylece yanlışlıkla hiçbir özelliği değiştirmeyebilirsiniz.
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instance_name\MSSQL\Binn\rlauncher.configSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\MSSQL\Binn\rlauncher.config
R versiyonu ve RevoScaleR sürümlerini almak için bir R komut göndermesini açın veya instance'a bağlı RGui'yi açın.
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instancename>\R_SERVICES\bin\x64\RGui.exeSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\R_SERVICES\bin\x64\RGui.exe
R konsolu, sürüm bilgilerini başlatmada gösterir. Örneğin, aşağıdaki sürüm SQL Server 2017 için varsayılan yapılandırmayı temsil etmektedir:
*Microsoft R Open 3.3.3*
*The enhanced R distribution from Microsoft*
*Microsoft packages Copyright (C) 2017 Microsoft*
*Loading Microsoft R Server packages, version 9.1.0.*
Python sürümleri
Python versiyonunu almanın birkaç yolu vardır. En kolay yol, Management Studio veya başka bir SQL sorgu aracından şu ifadeyi çalıştırmaktır:
-- Get Python runtime properties:
exec sp_execute_external_script
@language = N'Python'
, @script = N'
import sys
import pkg_resources
OutputDataSet = pandas.DataFrame(
{"property_name": ["Python.home", "Python.version", "Revo.version", "libpaths"],
"property_value": [sys.executable[:-10], sys.version, pkg_resources.get_distribution("revoscalepy").version, str(sys.path)]}
)
'
with WITH RESULT SETS (SQL keywords) ((PropertyName nvarchar(100), PropertyValue nvarchar(4000)));
Machine Learning Services çalışmıyorsa, pythonlauncher.config dosyasına bakarak kurulu Python sürümü belirleyebilirsiniz. Dosyanın bir kopyasını oluşturup açmanızı öneririz, böylece yanlışlıkla hiçbir özelliği değiştirmeyebilirsiniz.
- Sadece SQL Server 2017 için:
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\MSSQL\Log\ExtensibilityLog\pythonlauncher.config - PYTHONHOME'un değerini al.
- Mevcut çalışma dizininin değerini alın.
Note
Eğer SQL Server 2017'de hem Python hem de R yüklediyseniz, çalışma dizini ve çalışan hesap havuzu R ve Python dilleri için paylaşılmıştır.
R veya Python'un birden fazla örneği kurulu mu?
Bilgisayarda birden fazla R kütüphanesinin yüklü olup olmadığını kontrol edin. Bu çoğaltma şu durumlarda gerçekleşebilir:
- Kurulum sırasında hem R Hizmetlerini (In-Database) hem de R Sunucusunu (Bağımsız) seçersiniz.
- SQL Server'a ek olarak Microsoft R Client yüklüyorsunuz.
- R Tools for Visual Studio, R Studio, Microsoft R Client veya başka bir R IDE kullanılarak farklı bir R kütüphanesi seti kuruldu.
- Bilgisayar, birden fazla SQL Server örneğini barındırır ve birden fazla örnek makine öğrenimi kullanır.
Aynı koşullar Python için de geçerlidir.
Birden fazla kütüphane veya çalışma zamanının kurulduğunu fark ederseniz, sadece SQL Server örneğinde kullanılan Python veya R çalışma zamanlarıyla ilgili hataları aldığınızdan emin olun.
Hataların Kökeni
R kodunu çalıştırmaya çalıştığınızda gördüğünüz hatalar aşağıdaki kaynaklardan herhangi birinden gelebilir:
- SQL Server veritabanı motoru, saklanan prosedür sp_execute_external_script
- SQL Server Güvenli Launchpad
- Genişletilebilirlik çerçevesinin diğer bileşenleri, R ve Python fırlatıcıları ile uydu süreçleri
- Microsoft Open Database Connectivity (ODBC) gibi sağlayıcılar
- R programlama dili
Hizmetle ilk kez çalıştığınızda, hangi mesajların hangi hizmetten geldiğini anlamak zor olabilir. Sadece mesajın tam metnini değil, aynı zamanda mesajı gördüğünüz bağlamı da yakalamanızı öneriyoruz. Makine öğrenimi kodunu çalıştırmak için kullandığınız istemci yazılımına dikkat edin:
- Management Studio mı kullanıyorsun? Dış bir uygulama mı?
- R kodunu uzak bir istemcide mi çalıştırıyorsunuz, yoksa doğrudan bir depolanmış prosedürde mi?
SQL Server log dosyaları
En güncel SQL Server HATA GÜNLÜĞÜNÜ alın. Hata kayıtlarının tam seti, aşağıdaki varsayılan log dizininden gelen dosyalardan oluşur:
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\Log\ExtensibilityLogSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.SQL2016\MSSQL\Log\ExtensibilityLog
Note
Tam klasör adı, örnek adına bağlı olarak değişir.
Hatalar sp_execute_external_script tarafından döndürüldü
sp_execute_external_script komutunu çalıştırdığınızda geri dönen hata metninin tamamını, varsa, alın.
R veya Python kaynaklı sorunları olasılık dışı bırakmak için, R veya Python çalışma zamanını başlatan ve verileri iki yönlü olarak aktaran bu betiği çalıştırabilirsiniz.
R için
exec sp_execute_external_script @language =N'R',
@script=N'OutputDataSet<-InputDataSet',
@input_data_1 =N'select 1 as hello'
with result sets (([hello] int not null));
go
Python için
exec sp_execute_external_script @language =N'Python',
@script=N'OutputDataSet= InputDataSet',
@input_data_1 =N'select 1 as hello'
with result sets (([hello] int not null));
go
Genişletilebilirlik çerçevesi tarafından oluşturulan hatalar
SQL Server, harici script dili çalışma zamanları için ayrı loglar oluşturur. Bu hatalar Python veya R dili tarafından oluşturulmaz. Bunlar, dile özgü başlatıcılar ve bunların yardımcı işlemleri dahil olmak üzere SQL Server'daki genişletilebilirlik bileşenlerinden oluşturulurlar.
Bu günlükleri aşağıdaki varsayılan konumlardan alabilirsiniz:
SQL Server 2016
C:\Program Files\Microsoft SQL Server\MSSQL13.<instance_name>\MSSQL\Log\ExtensibilityLogSQL Server 2017
C:\Program Files\Microsoft SQL Server\MSSQL14.<instance_name>\MSSQL\Log\ExtensibilityLog
Note
Tam klasör adı, örnek adına göre değişir. Konfigürasyonunuza bağlı olarak, klasör farklı bir sürücüde olabilir.
Örneğin, aşağıdaki log mesajları genişletilebilirlik çerçevesiyle ilgilidir:
MSSQLSERVER01 kullanıcısı için LogonUser başarısız oldu
Bu durum, harici betikleri çalıştıran işçi hesaplarının bu örneğe erişemediğini gösterebilir.
InitializePhysicalUsersPool başarısız oldu
Bu mesaj, güvenlik ayarlarınız nedeniyle kurulumun dış betikleri çalıştırmak için gereken çalışan hesapları havuzunu oluşturmasının engellendiği anlamına gelebilir.
Güvenlik Bağlam Yöneticisi başlatma başarısız oldu
Uydu Oturum Yöneticisi başlatma başarısız oldu
Sistem olayları
- Windows Olay Görüntüleyicisi'i açın ve Launchpad dizisini içeren mesajları Sistem Olay logunda arayın.
- ExtLaunchErrorlog dosyasını açın ve ErrorCode dizesini arayın. ErrorCode ile ilişkili mesajı gözden geçirin.
Örneğin, aşağıdaki mesajlar SQL Server genişletilebilirlik çerçevesiyle ilgili yaygın sistem hatalarıdır:
SQL Server Launchpad (MSSQLSERVER) servisi aşağıdaki hata nedeniyle başlayamadı: <metin>
Hizmet, başlatma veya kontrol talebine zamanında yanıt vermedi.
SQL Server Launchpad (MSSQLSERVER) servisinin bağlanmasını beklerken bir zaman aşımı (120000 milisaniye) sağlandı.
Bellek dökümü dosyaları
Hata ayıklama konusunda bilginiz varsa, dump dosyalarını kullanarak Launchpad'deki bir hatayı analiz edebilirsiniz.
- SQL Server için kurulum önyükleme loglarını içeren klasörü bulun. Örneğin, SQL Server 2016'da varsayılan yol C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log idi.
- Genişletilebilirliğe özel bootstrap log alt klasörünü açın.
- Destek talebi göndermeniz gerekirse, bu klasörün tüm içeriğini sıkıştırılmış bir dosyaya ekleyin. Örneğin, C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log\LOG\ExtensibilityLog.
Tam konum sisteminizde farklı olabilir ve C diskiniz dışında bir diskte olabilir. Makine öğreniminin kurulduğu instance'ın loglarını mutlaka al.
Yapılandırma ayarları
Bu bölüm, R veya Python betikleri çalıştırırken hata kaynağı olabilecek ek bileşenleri veya sağlayıcıları listeler.
Hangi ağ protokolleri mevcut?
Machine Learning Services, genişletilebilirlik bileşenleri arasında iç iletişim ve harici R veya Python istemcileriyle iletişim için aşağıdaki ağ protokollerini gerektirir.
- Adlandırılmış kanallar
- TCP/IP
SQL Server Yapılandırma Yöneticisi'ı açın ve bir protokolün yüklü olup olmadığını belirlemek ve eğer kuruluysa, etkin olup olmadığını belirlemek için kullanılır.
Güvenlik yapılandırması ve izinleri
İşçi hesapları için:
- Denetim Masası'de Kullanıcılar ve Gruplar bölümünü açın ve harici script işlerini çalıştırmak için kullanılan grubu bulabilirsiniz. Varsayılan olarak, grup SQLRUserGroup'tur.
- Grubun var olduğunu ve en az bir çalışan hesabı içerdiğinden emin olun.
- SQL Server Management Studio'da, R veya Python işlerinin çalıştırılacağı örneği seçin, Security'yi seçin ve ardından SQLRUserGroup için giriş olup olmadığını belirleyin.
- Kullanıcı grubunun izinlerini inceleyin.
Bireysel kullanıcı hesapları için:
Örneğin Karışık Mod kimlik doğrulamasını, yalnızca SQL oturum açmayı veya yalnızca Windows kimlik doğrulamasını destekleyip desteklemediğini belirleyin. Bu ayar, R veya Python kod gereksinimlerinizi etkiler.
R kodunu çalıştırması gereken her kullanıcı için, her veritabanında R'den nesnelerin yazılacağı, verilerin erişileceği veya nesnelerin oluşturulacağı gerekli izin seviyesini belirleyin.
Komut dosyası yürütmeyi etkinleştirmek için, gerektiğinde roller oluşturun veya kullanıcıları aşağıdaki rollere ekleyin:
- db_owner dışındakilerin tümü için EXECUTE ANY EXTERNAL SCRIPT gerekir.
- db_datawriter: R veya Python'den sonuç yazmak.
- db_ddladmin: Yeni nesneler yaratmak.
- db_datareader: R veya Python kodunda kullanılan verileri okumak.
SQL Server 2016'yı kurduğunuzda varsayılan başlangıç hesaplarından herhangi birini değiştirip değiştirmediğinize dikkat edin.
Bir kullanıcının yeni R paketleri yüklemesi veya diğer kullanıcılar tarafından kurulan R paketlerini kullanması gerekiyorsa, örneğinde paket yönetimini etkinleştirip ek izinler atanmanız gerekebilir.
Hangi klasörler antivirüs yazılımı tarafından kilitleniyor?
Antivirüs yazılımı klasörleri kilitleyebilir, bu da hem makine öğrenimi özelliklerinin kurulmasını hem de başarılı bir betik çalıştırılmasını engeller. SQL Server ağacındaki herhangi bir klasörün virüs taramasına tabi olup olmadığını belirleyin.
Ancak, bir örnekte birden fazla servis veya özellik yüklendiğinde, örnek tarafından kullanılan tüm olası klasörleri saymak zor olabilir. Örneğin, yeni özellikler eklendiğinde, yeni klasörler tanımlanmalı ve hariç tutulmalıdır.
Ayrıca, bazı özellikler çalışma zamanında dinamik olarak yeni klasörler oluşturur. Örneğin, bellek içi OLTP tabloları, depolanmış prosedürler ve fonksiyonlar çalışma zamanında yeni dizinler oluşturur. Bu klasör adları genellikle GUID içerir ve tahmin edilemez. SQL Server Trusted Launchpad, R ve Python script işleri için yeni çalışma dizinleri oluşturur.
SQL Server süreci ve özellikleri için gereken tüm klasörleri hariç tutmak mümkün olmayabilir, bu yüzden SQL Server örnek dizin ağacının tamamını hariç tutmanızı öneririz.
SQL Server için güvenlik duvarı açık mı? Instance uzaktan bağlantıları destekliyor mu?
SQL Server'ın uzak bağlantıları destekleyip desteklemediğini belirlemek için Uzak sunucu bağlantılarını yapılandırma bölümüne bakınız.
SQL Server için bir güvenlik duvarı kuralı oluşturulup oluşturulmadığını belirleyin. Güvenlik nedenleriyle, varsayılan kurulumda, uzaktan R veya Python istemcisinin instance'a bağlanması mümkün olmayabilir. Daha fazla bilgi için, SQL Server'a bağlanma sorun giderme bölümünü inceleyebilirsiniz.