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 Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
Microsoft SQL Server SQL Server Analysis Services, standart istatistiksel hesaplamalardan hiyerarşideki üyelerin çapraz geçişine kadar her şeyi gerçekleştirmek üzere tasarlanan Çok Boyutlu İfadeler (MDX) ve Veri Madenciliği Uzantıları (DMX) dilleri ile kullanılmak üzere birçok iç işlev sağlar. Ancak, diğer karmaşık ve sağlam ürünlerde olduğu gibi, böyle bir ürünün işlevselliğini her zaman daha da genişletme ihtiyacı vardır.
Bu nedenle, SQL Server Analysis Services bir SQL Server Analysis Services örneğine veya veritabanına derlemeler eklemenize olanak tanır. Derlemeler, Microsoft Visual Basic .NET veya Microsoft Visual C# gibi herhangi bir ortak dil çalışma zamanı (CLR) dilini kullanarak dış, kullanıcı tanımlı işlevler oluşturmanıza olanak tanır. Microsoft Visual Basic veya Microsoft Visual C++ gibi Bileşen Nesne Modeli (COM) Otomasyon dillerini de kullanabilirsiniz.
Önemli
COM derlemeleri güvenlik riski doğurabilir. Bu risk ve diğer önemli noktalar nedeniyle, SQL Server 2008 Analysis Services'te (SSAS) COM derlemeleri kullanım dışı bırakılmıştır. COM derlemeleri gelecek sürümlerde desteklenmeyebilir.
Derlemeler, MDX ve DMX'in iş işlevselliğini genişletmenize olanak sağlar. Dinamik bağlantı kitaplığı (DLL) gibi bir kitaplığa istediğiniz işlevselliği oluşturur ve kitaplığı bir SQL Server Analysis Services örneğine veya SQL Server Analysis Services veritabanına derleme olarak eklersiniz. Kitaplıktaki genel yöntemler daha sonra MDX ve DMX ifadeleri, yordamlar, hesaplamalar, eylemler ve istemci uygulamaları için kullanıcı tanımlı işlevler olarak kullanıma sunulur.
Sunucuya yeni yordamlar ve işlevler içeren bir derleme eklenebilir. Sunucu tarafından sağlanmayan özel işlevleri geliştirmek veya eklemek için derlemeleri kullanabilirsiniz. Derlemeleri kullanarak Çok Boyutlu İfadelere (MDX), Veri Madenciliği Uzantılarına (DMX) veya saklı yordamlara yeni işlevler ekleyebilirsiniz. Derlemeler, özel uygulamanın çalıştırıldığı konumdan yüklenir ve derleme ikili dosyasının bir kopyası sunucudaki veritabanı verileriyle birlikte kaydedilir. Bir derleme kaldırıldığında, kopyalanan derleme de sunucudan kaldırılır.
Derlemeler iki farklı türde olabilir: COM ve CLR. CLR derlemeleri C#, Visual Basic .NET, yönetilen C++ gibi .NET Framework programlama dillerinde geliştirilen derlemelerdir. COM derlemeleri, sunucuda kayıtlı olması gereken COM kitaplıklarıdır
Derlemeler Server veya Database nesnelerine eklenebilir. Sunucu derlemeleri, sunucuya bağlı herhangi bir kullanıcı veya sunucudaki herhangi bir nesne tarafından çağrılabilir. Veritabanı derlemeleri yalnızca veritabanına bağlı nesneler veya kullanıcılar tarafından Database çağrılabilir.
Basit Assembly bir nesne temel bilgilerden (Ad ve Kimlik), dosya koleksiyonundan ve güvenlik belirtimlerinden oluşur.
Hata ayıklama dosyaları derleme dosyalarıyla yüklendiyse, dosya koleksiyonu yüklenen derleme dosyalarına ve karşılık gelen hata ayıklama (.pdb) dosyalarına başvurur. Derleme dosyaları, uygulamanın dosyaları tanımladığı konumdan yüklenir ve verilerin yanı sıra bir kopya da sunucuya kaydedilir. Derleme dosyasının kopyası, hizmet her başlatıldığında derlemeyi yüklemek için kullanılır.
Güvenlik belirtimleri, izin kümesini ve derlemenin çalıştırılmasında kullanılan kimliğe bürünme yöntemini içerir.
Kullanıcı Tanımlı İşlevini Çağırma
Bir derlemede kullanıcı tarafından tanımlanan bir fonksiyonu çağırmak, yalnızca tam ad kullanmanız gerektiği dışında, yerleşik bir fonksiyonu çağırmak gibi gerçekleştirilir. Örneğin, MDX tarafından beklenen bir tür döndüren kullanıcı tanımlı bir işlev, aşağıdaki örnekte gösterildiği gibi bir MDX sorgusuna eklenir:
Select MyAssembly.MyClass.MyStoredProcedure(a, b, c) on 0 from Sales
Kullanıcı tanımlı işlevler, CALL anahtar sözcüğü kullanılarak da çağrılabilir. Kayıt kümeleri veya geçersiz değerler döndüren kullanıcı tanımlı işlevler için CALL anahtar sözcüğünü kullanmanız gerekir ve kullanıcı tanımlı işlev geçerli küp veya veri madenciliği modeli gibi MDX veya DMX deyimi veya betiği bağlamındaki bir nesneye bağımlıysa CALL anahtar sözcüğünü kullanamazsınız. MDX veya DMX sorgularının dışında çağrılan bir işlevin yaygın bir kullanımı, yönetim işlevlerini gerçekleştirmek için AMO nesne modelini kullanmaktır. Örneğin, işlevi MyVoidProcedure(a, b, c) bir MDX deyiminde kullanmak istiyorsanız, aşağıdaki söz dizimi kullanılır:
Call MyAssembly.MyClass.MyVoidProcedure(a, b, c)
Derlemeler, ortak kodun bir kez geliştirilmesini ve tek bir konumda depolanmasını sağlayarak veritabanı geliştirmeyi basitleştirir. İstemci yazılım geliştiricileri SQL Server Analysis Services için işlev kitaplıkları oluşturabilir ve bunları uygulamalarıyla dağıtabilir.
Derlemeler ve kullanıcı tanımlı işlevler, SQL Server Analysis Services işlev kitaplığının veya diğer derlemelerin işlev adlarını çoğaltabilir. Tam adını kullanarak kullanıcı tanımlı işlevi çağırdığınız sürece, SQL Server Analysis Services doğru yordamı kullanır. SQL Server Analysis Services, güvenlik amacıyla ve farklı bir sınıf kitaplığında yinelenen bir ad çağırma olasılığını ortadan kaldırmak için saklı yordamlar için yalnızca tam nitelikli adları kullanmanızı gerektirir.
Belirli bir CLR derlemesinden kullanıcı tanımlı bir işlevi çağırmak için, kullanıcı tanımlı işlevin önünde derleme adı, tam sınıf adı ve yordam adı gösterilir. Burada gösterildiği gibi:
AssemblyName. FullClassName. ProcedureName(Argüman1, Argüman2, ...)
SQL Server Analysis Services'in önceki sürümleriyle geriye dönük uyumluluk için aşağıdaki söz dizimi de kabul edilebilir:
AssemblyName! FullClassName! ProcedureName(Parametre1, Parametre2, ...)
COM kitaplığı birden çok arabirimi destekliyorsa, burada gösterildiği gibi yordam adını çözümlemek için arabirim kimliği de kullanılabilir:
AssemblyName! InterfaceID! ProcedureName(Argüman1, Argüman2, ...)
Security
Derlemeler için güvenlik, bir kod erişim güvenlik modeli olan .NET Framework güvenlik modelini temel alır. .NET Framework, çalışma zamanının hem tam olarak güvenilen hem de kısmen güvenilen kodu barındırabileceğini varsayar bir kod erişimi güvenlik mekanizmasını destekler. .NET Framework kod erişim güvenliği tarafından korunan kaynaklar genellikle kaynağa erişimi etkinleştirmeden önce ilgili izni gerektiren yönetilen kod tarafından sarmalanmıştır. İzin talebi yalnızca çağrı yığınındaki tüm arayanların (derleme düzeyinde) ilgili kaynak iznine sahip olması durumunda karşılanır.
Derlemeler için, Derleme nesnesinde PermissionSet özelliğiyle yürütme izni geçirilir. Yönetilen kodun aldığı izinler, yürürlükteki güvenlik ilkesi tarafından belirlenir. SQL Server Analysis Services tarafından barındırılmayan bir ortamda zaten üç politika düzeyi yürürlüktedir: kuruluş, bilgisayar ve kullanıcı. Kodun aldığı izinlerin etkili listesi, bu üç düzey tarafından alınan izinlerin kesişimi tarafından belirlenir.
SQL Server Analysis Services, barındırırken CLR'ye konak düzeyinde bir güvenlik ilkesi düzeyi sağlar; bu ilke, her zaman etkin olan üç ilke düzeyinin altında ek bir ilke düzeyidir. Bu ilke, SQL Server Analysis Services tarafından oluşturulan her uygulama etki alanı için ayarlanır.
SQL Server Analysis Services konak düzeyi ilkesi, sistem derlemeleri için SQL Server Analysis Services sabit ilkesinin ve kullanıcı derlemeleri için kullanıcı tarafından belirtilen ilkenin bir bileşimidir. SQL Server Analysis Services host ilkesinin, kullanıcı tarafından belirtilen parçası, her derleme için montaj sahibinin üç izin grubundan birini belirtmesine dayanır.
| İzin Ayarı | Description |
|---|---|
| Güvenli | İç hesaplama izni sağlar. Bu izin kümesi, .NET Framework'teki korumalı kaynaklara erişim izni atanmaz. PermissionSet özelliğiyle belirtilmemişse bu, derleme için varsayılan izin kümesidir. |
| ExternalAccess | Dış sistem kaynaklarına erişme olanağıyla Güvenli ayarıyla aynı erişimi sağlar. Bu izin demeti güvenlik garantileri sunmaz (bu senaryo için güvenli hale getirmek mümkün olsa da), ancak güvenilirlik garantileri verir. |
| Güvenli olmayan | Hiçbir kısıtlama sağlamaz. Bu izin kümesi altında çalışan yönetilen kod için güvenlik veya güvenilirlik garantisi sağlanamaz. Yönetici tarafından dahil edilen özel izinler bile dahil olmak üzere tüm izinler, bu güven düzeyinde çalışan koda verilir. |
CLR, SQL Server Analysis Services tarafından barındırıldığında, yığın yürüyüş tabanlı izin denetimi yerel SQL Server Analysis Services koduyla sınırda durur. SQL Server Analysis Services derlemelerindeki tüm yönetilen kodlar her zaman daha önce listelenen üç izin kategorisinden birine girer.
COM (veya yönetilmeyen) derleme yordamları CLR güvenlik modelini desteklemez.
Kimliğe bürünme
Yönetilen kod SQL Server Analysis Services dışındaki herhangi bir kaynağa her eriştiğinde, SQL Server Analysis Services, erişimin uygun bir Windows güvenlik bağlamında gerçekleştiğinden emin olmak için derlemenin ImpersonationMode özellik ayarıyla ilişkili kuralları izler. Güvenli izin ayarını kullanan derlemeler SQL Server Analysis Services dışındaki kaynaklara erişemediğinden, bu kurallar yalnızca ExternalAccess ve Güvenli Olmayan izin ayarlarını kullanan derlemeler için geçerlidir.
Geçerli çalışma bağlamı Windows Kimliği Doğrulanmış oturum açma bilgilerine karşılık geliyorsa ve özgün çağıranın bağlamı ile aynıysa (ortada EXECUTE AS yoksa), SQL Server Analysis Services kaynağa erişmeden önce Windows Kimliği Doğrulanmış oturum açmayı taklit eder.
Özgün çağıranın bağlamını değiştiren bir ara EXECUTE AS varsa, dış kaynağa erişme girişimi başarısız olur.
ImpersonationMode özelliği ImpersonateCurrentUser veya ImpersonateAnonymous olarak ayarlanabilir. ImpersonateCurrentUser varsayılan ayarı, geçerli kullanıcının ağ oturum açma hesabı altında bir derleme çalıştırır. ImpersonateAnonymous ayarı kullanılırsa, yürütme bağlamı sunucudaki Windows oturum açma kullanıcı hesabı IUSER_sunucu adına karşılık gelir. Bu, sunucuda sınırlı ayrıcalıklara sahip İnternet konuk hesabıdır. Bu bağlamda çalışan bir derleme yalnızca yerel sunucudaki sınırlı kaynaklara erişebilir.
Uygulama Etki Alanları
SQL Server Analysis Services, uygulama etki alanlarını doğrudan kullanıma sunmaz. Aynı uygulama etki alanında çalışan bir dizi derleme nedeniyle, uygulama etki alanları .NET Framework'teki System.Reflection ad alanını veya başka bir şekilde kullanarak yürütme zamanında birbirlerini bulabilir ve bunları geç bağlı bir şekilde çağırabilir. Bu tür çağrılar SQL Server Analysis Services yetkilendirme tabanlı güvenlik tarafından kullanılan izin denetimlerine tabi olacaktır.
Uygulama etki alanı sınırı ve her etki alanına giden derlemeler uygulama tarafından tanımlandığından, aynı uygulama etki alanındaki derlemeleri bulmaya güvenmemelisiniz.
Ayrıca Bkz.
Saklı Yordamlar için Güvenliği Ayarlama
Saklı Yordamları Tanımlama