Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
Microsoft SQL Server SQL Server Analysis Services poskytuje mnoho vnitřních funkcí pro použití s jazyky Multidimensional Expressions (MDX) a Data Mining Extensions (DMX), které jsou navrženy pro provádění standardních statistických výpočtů až po navigaci mezi členy v hierarchii. Stejně jako u jiných složitých a robustních produktů je vždy potřeba rozšířit funkčnost takového produktu dále.
Služba SQL Server Analysis Services proto umožňuje přidat sestavení do instance nebo databáze služby SQL Server Analysis Services. Sestavení umožňují vytvářet externí uživatelem definované funkce pomocí libovolného jazyka CLR (Common Language Runtime), jako je Microsoft Visual Basic .NET nebo Microsoft Visual C#. Můžete také použít automatizační jazyky modelu COM (Component Object Model), jako je Microsoft Visual Basic nebo Microsoft Visual C++.
Důležité
Sestavení COM mohou představovat bezpečnostní riziko. Vzhledem k tomuto riziku a dalším úvahám byla sestavení COM odstraněna ve službě SQL Server 2008 Analysis Services (SSAS). Sestavení COM nemusí být v budoucích verzích podporována.
Sestavení umožňují rozšíření obchodních funkcí MDX a DMX. Funkcionalitu, kterou chcete vytvořit do knihovny, jako je knihovna DLL, a přidáte ji jako sestavení do instance nebo databáze služby SQL Server Analysis Services. Veřejné metody v knihovně se pak zveřejní jako uživatelem definované funkce pro výrazy MDX a DMX, postupy, výpočty, akce a klientské aplikace.
Sestavení s novými postupy a funkcemi lze přidat na server. Sestavení můžete použít k vylepšení nebo přidání vlastních funkcí, které server neposkytuje. Pomocí sestavení můžete přidat nové funkce do multidimenzionálních výrazů (MDX), rozšíření dolování dat (DMX) nebo uložených procedur. Sestavení jsou načtena z umístění, kde je vlastní aplikace spuštěna, a kopie binárního souboru sestavení se uloží spolu s databázovými daty na serveru. Při odebrání sestavení se ze serveru odebere také zkopírované sestavení.
Sestavení mohou mít dva různé typy: COM a CLR. Sestavení CLR jsou sestavení vyvinutá v programovacích jazycích rozhraní .NET Framework, jako jsou C#, Visual Basic .NET, spravované C++. Sestavení COM jsou knihovny modelu COM, které musí být registrovány na serveru.
Sestavení lze přidat do objektů Server nebo Database. Sestavení serveru může být voláno libovolným uživatelem připojeným k serveru nebo jakýmkoli objektem na serveru. Sestavení databáze mohou být volána pouze objekty Database nebo uživateli připojenými k databázi.
Jednoduchý Assembly objekt se skládá ze základních informací (Název a ID), shromažďování souborů a specifikací zabezpečení.
Kolekce souborů odkazuje na načtené soubory sestavení a jejich odpovídající soubory ladění (.pdb), pokud byly ladicí soubory načteny se soubory sestavení. Soubory sestavení se načítají z umístění, do kterého aplikace definovala soubory, a kopie se uloží na server spolu s daty. Kopie souboru sestavení se používá k načtení sestavení při každém spuštění služby.
Specifikace zabezpečení zahrnují sadu oprávnění a zosobnění použité ke spuštění sestavení.
Volání uživatelsky definovaných funkcí
Volání uživatelem definované funkce v sestavení se provádí stejně jako volání vnitřní funkce, s tím rozdílem, že musíte použít plně kvalifikovaný název. Například uživatelem definovaná funkce, která vrací typ očekávaný jazykem MDX, je součástí dotazu MDX, jak je znázorněno v následujícím příkladu:
Select MyAssembly.MyClass.MyStoredProcedure(a, b, c) on 0 from Sales
Uživatelem definované funkce lze také volat pomocí klíčového slova CALL. Klíčové slovo CALL musíte použít pro uživatelem definované funkce, které vrací sady záznamů nebo hodnoty void, a klíčové slovo CALL nelze použít, pokud uživatelem definovaná funkce závisí na objektu v kontextu příkazu MDX nebo DMX nebo skriptu, jako je aktuální datová krychle nebo model dolování dat. Běžným použitím funkce volané mimo dotaz MDX nebo DMX je použití objektového modelu AMO k provádění funkcí správy. Pokud byste například chtěli použít funkci MyVoidProcedure(a, b, c) v příkazu MDX, použila by se následující syntaxe:
Call MyAssembly.MyClass.MyVoidProcedure(a, b, c)
Sestavení zjednodušují vývoj databází tím, že umožňují, aby se společný kód vyvinul jednou a uložil do jednoho umístění. Vývojáři klientského softwaru můžou vytvářet knihovny funkcí pro SQL Server Analysis Services a distribuovat je se svými aplikacemi.
Sestavení a uživatelem definované funkce mohou duplikovat názvy funkcí knihovny funkcí služby SQL Server Analysis Services nebo jiných sestavení. Pokud zavoláte uživatelem definovanou funkci pomocí plně kvalifikovaného názvu, služba SQL Server Analysis Services použije správný postup. Pro účely zabezpečení a odstranění pravděpodobnosti volání duplicitního názvu v jiné knihovně tříd vyžaduje služba SQL Server Analysis Services, abyste pro uložené procedury používali pouze plně kvalifikované názvy.
Chcete-li volat uživatelsky definovanou funkci z konkrétního sestavení CLR, před názvem funkce zadejte název sestavení, úplný název třídy a název procedury, jak je znázorněno zde:
AssemblyName. FullClassName. ProcedureName(Argument1; Argument2; ...)
Z důvodu zpětné kompatibility se staršími verzemi služby SQL Server Analysis Services je také přijatelná následující syntaxe:
AssemblyName! FullClassName! ProcedureName(Argument1; Argument2; ...)
Pokud knihovna COM podporuje více rozhraní, ID rozhraní lze také použít k rozlišení názvu procedury, jak je znázorněno zde:
AssemblyName! ID rozhraní! ProcedureName(Argument1, Argument2, ...)
Zabezpečení
Zabezpečení sestavení je založeno na modelu zabezpečení rozhraní .NET Framework, což je model zabezpečení přístupu kódu. Rozhraní .NET Framework podporuje mechanismus zabezpečení přístupu kódu, který předpokládá, že modul runtime může hostovat plně důvěryhodný i částečně důvěryhodný kód. Prostředky chráněné zabezpečením přístupu kódu rozhraní .NET Framework jsou obvykle zabaleny spravovaným kódem, který vyžaduje odpovídající oprávnění před povolením přístupu k prostředku. Požadavek na oprávnění je splněn pouze v případě, že všichni volající (na úrovni sestavení) v zásobníku volání mají příslušné oprávnění pro daný prostředek.
Pro sestavení je oprávnění ke spuštění předáno vlastností PermissionSet na objektu Assembly. Oprávnění, která spravovaný kód přijímá, jsou určena zásadami zabezpečení, které platí. V nehostovaném prostředí služby SQL Server Analysis Services již existují tři úrovně zásad: podnikový, počítač a uživatel. Efektivní seznam oprávnění, která kód přijímá, je určen průnikem oprávnění získaných těmito třemi úrovněmi.
SQL Server Analysis Services poskytuje během hostování modulu CLR bezpečnostní zásady na úrovni hostitele; tato zásada je další úroveň zásad nižší než tři úrovně zásad, které jsou vždy v platnosti. Tato zásada je nastavená pro každou doménu aplikace vytvořenou službou SQL Server Analysis Services.
Zásady na úrovni hostitele služby SQL Server Analysis Services jsou kombinací pevných zásad služby SQL Server Analysis Services pro systémová sestavení a uživatelem určené zásady pro uživatelská sestavení. Uživatelsky zadaná část zásady hostitele služby SQL Server Analysis Services je založená na vlastníkovi sestavení, který pro každé sestavení určuje jeden ze tří kbelíků oprávnění:
| Nastavení oprávnění | Description |
|---|---|
| Bezpečné | Poskytuje interní výpočetní oprávnění. Tento kontejner oprávnění nepřiřazuje oprávnění pro přístup k žádným chráněným prostředkům v rozhraní .NET Framework. Toto je výchozí kontejner oprávnění pro sestavení, pokud není zadána žádná pomocí vlastnosti PermissionSet. |
| ExternalAccess | Poskytuje stejný přístup jako nastavení Bezpečné s další možností přístupu k externím systémovým prostředkům. Tento kontejner oprávnění nenabízí záruky zabezpečení (i když je možné tento scénář zabezpečit), ale poskytuje záruky spolehlivosti. |
| Nebezpečné | Neposkytuje žádná omezení. Pro spravovaný kód spuštěný v rámci této sady oprávnění není možné provádět žádné záruky zabezpečení ani spolehlivosti. Jakékoli oprávnění, i vlastní oprávnění zahrnutá správcem, se uděluje kódu spuštěným na této úrovni důvěryhodnosti. |
Pokud je modul CLR hostován službou SQL Server Analysis Services, kontrola oprávnění založená na zásobníku se zastaví na hranici s nativním kódem služby SQL Server Analysis Services. Každý spravovaný kód v sestaveních služby SQL Server Analysis Services vždy spadá do jedné ze tří kategorií oprávnění uvedených dříve.
Rutiny sestavení COM (nebo nespravované) nepodporují model zabezpečení CLR.
Napodobování
Pokaždé, když spravovaný kód přistupuje k libovolnému prostředku mimo službu SQL Server Analysis Services, sql Server Analysis Services se řídí pravidly přidruženými k nastavení vlastnosti ImpersonationMode sestavení, aby se zajistilo, že přístup nastane v příslušném kontextu zabezpečení systému Windows. Vzhledem k tomu, že sestavení používající nastavení bezpečného oprávnění nemají přístup k prostředkům mimo službu SQL Server Analysis Services, platí tato pravidla pouze pro sestavení používající nastavení oprávnění ExternalAccess a Nebezpečné .
Pokud aktuální kontext spuštění odpovídá ověřenému přihlášení systému Windows a je stejný jako kontext původního volajícího (to znamená, že uprostřed neexistuje funkce EXECUTE AS), služba SQL Server Analysis Services před přístupem k prostředku zosobní ověřené přihlášení systému Windows.
Pokud existuje zprostředkující funkce EXECUTE AS, která změnila kontext z původního volajícího), pokus o přístup k externímu prostředku selže.
Vlastnost ImpersonationMode lze nastavit na ImpersonateCurrentUser nebo ImpersonateAnonymous. Výchozí nastavení ImpersonateCurrentUser spustí sestavení pod účtem pro přihlášení k síti aktuálního uživatele. Pokud se použije nastavení ImpersonateAnonymous , kontext spuštění odpovídá přihlašovacímu uživatelskému účtu systému Windows IUSER_servername na serveru. Jedná se o účet hosta v internetu, který má omezená oprávnění na serveru. Sestavení spuštěné v tomto kontextu má přístup pouze k omezeným prostředkům na místním serveru.
Domény aplikací
SLUŽBA SQL Server Analysis Services nezpřístupňuje domény aplikací přímo. Vzhledem k tomu, že je sada sestavení spuštěná ve stejné doméně aplikace, můžou se domény aplikací v době provádění navzájem zjišťovat pomocí oboru názvů System.Reflection v rozhraní .NET Framework nebo jiným způsobem a můžou je volat pozdně vázaným způsobem. Tato volání budou podléhat kontrolám oprávnění používaným zabezpečením založeným na autorizaci služby SQL Server Analysis Services.
Neměli byste se spoléhat na vyhledání sestavení ve stejné doméně aplikace, protože hranice domény aplikace a sestavení, která přejdou do každé domény, jsou definována implementací.
Viz také
Nastavení zabezpečení uložených procedur
Definování uložených procedur