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 Azure SQL Yönetilen Örneği
.NET Framework'te bir assembly sınıfında tanımlanan bir kullanıcı tanımlı bir toplu fonksiyon oluşturur. Database Engine'in toplu fonksiyonu uygulamasına bağlaması için, uygulamayı içeren .NET Framework assembly önce bir CREATE ASSEMBLY ifade kullanılarak SQL Server'ın bir örneğine yüklenmelidir.
Transact-SQL söz dizimi kuralları
Syntax
CREATE AGGREGATE [ schema_name . ] aggregate_name
(@param_name <input_sqltype>
[ ,...n ] )
RETURNS <return_sqltype>
EXTERNAL NAME assembly_name [ .class_name ]
<input_sqltype> ::=
system_scalar_type | { [ udt_schema_name. ] udt_type_name }
<return_sqltype> ::=
system_scalar_type | { [ udt_schema_name. ] udt_type_name }
Arguments
schema_name
Kullanıcı tanımlı toplu fonksiyonun ait olduğu şemanın adıdır.
aggregate_name
Oluşturmak istediğiniz toplu fonksiyonun adı.
@
param_name
Kullanıcı tanımlı toplamda bir veya daha fazla parametre. Bir parametrenin değeri, toplu fonksiyon yürütüldüğünde kullanıcı tarafından sağlanmalıdır. Bir parametre adını ilk karakter olarak "at" işareti (@) kullanarak belirtin. Parametre adı , tanımlayıcılar için kurallarla uyumlu olmalıdır. Parametreler fonksiyona göre yereldir.
system_scalar_type
SQL Server sisteminden herhangi biri giriş parametresinin veya dönüş değerinin değerini tutacak skaler veri tipidir. Tüm skaler veri türleri kullanıcı tanımlı bir aggregate için parametre olarak kullanılabilir, metin, ntext ve görüntü hariç.
İmleç ve tablo gibi skaler olmayan tipler belirtilemez.
udt_schema_name
CLR kullanıcı tanımlı tipinin ait olduğu şemanın adıdır. Belirtilmediyse, Database Engine referanslar udt_type_name aşağıdaki sırayla yapılır:
Yerel SQL tür isim alanı.
Geçerli veritabanındaki geçerli kullanıcının varsayılan şeması.
Geçerli veritabanındaki dbo şeması.
udt_type_name
Mevcut veritabanında zaten oluşturulmuş bir CLR kullanıcı tanımlı türünün adı.
Eğer udt_schema_name belirtilmemişse, SQL Server türün mevcut kullanıcının şemasına ait olduğunu varsayar.
assembly_name [ .class_name ]
Kullanıcı tarafından tanımlanan aggregate fonksiyonuyla bağlanacak assemble'i ve isteğe bağlı olarak, assembly'nin ait olduğu şemanın adını ve kullanıcı tanımlı aggregate'i uygulayan assembly içindeki sınıfın adını belirtir. Assembly veritabanında zaten bir CREATE ASSEMBLY ifade kullanılarak oluşturulmuş olmalıdır.
class_name, geçerli bir SQL Server tanımlayıcısı olmalı ve assembly içinde bulunan bir sınıfın adıyla eşleşmelidir.
class_name , sınıfı yazmak için kullanılan programlama dili C# gibi isim alanları kullanıyorsa, isim uzayı nitelikli bir isim olabilir.
Eğer class_name belirtilmemişse, SQL Server aggregate_name ile aynı olduğunu varsayar.
Remarks
Varsayılan olarak, SQL Server'ın CLR kodunu çalıştırma özelliği kapalıdır. Yönetilen kod modüllerine referans veren veritabanı nesneleri oluşturabilir, değiştirebilir ve bırakabilirsiniz, ancak bu modüllerdeki kod, sp_configure kullanılarak clr etkinleştirilmiş seçeneği etkinleştirilmedikçe SQL Server örneğinde çalışmaz.
assembly_name ve yöntemlerinde referans verilen montaj sınıfı, SQL Server örneğinde kullanıcı tanımlı bir toplu fonksiyonun uygulanması için tüm gereksinimleri karşılamalıdır. Daha fazla bilgi için CLR User-Defined Aggregates bölümüne bakınız.
Permissions
HARİŞ İSM maddesinde belirtilen montaj için izin ve ayrıca REFERANS izni gerektirir CREATE AGGREGATE .
Examples
Aşağıdaki örnek, bir StringUtilities.csproj örnek uygulamasının derlendiğini varsaymaktadır. Daha fazla bilgi için bkz. String Utility Functions Sample.
Örnek agrega Concatenateoluşturur. Aggregate oluşturulmadan önce, montaj StringUtilities.dll yerel veritabanına kaydedilir.
USE AdventureWorks2022;
GO
DECLARE @SamplesPath nvarchar(1024)
-- You may have to modify the value of the this variable if you have
--installed the sample some location other than the default location.
SELECT @SamplesPath = REPLACE(physical_name, 'Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\master.mdf', 'Microsoft SQL Server\130\Samples\Engine\Programmability\CLR\')
FROM master.sys.database_files
WHERE name = 'master';
CREATE ASSEMBLY StringUtilities FROM @SamplesPath + 'StringUtilities\CS\StringUtilities\bin\debug\StringUtilities.dll'
WITH PERMISSION_SET=SAFE;
GO
CREATE AGGREGATE Concatenate(@input nvarchar(4000))
RETURNS nvarchar(4000)
EXTERNAL NAME [StringUtilities].[Microsoft.Samples.SqlServer.Concatenate];
GO