Toplam (Transact-SQL) oluştur
derleme bir sınıf içinde olan uygulama tanımlı bir kullanıcı tanımlı topluişlev oluşturur .NET Framework. İçin Veritabanı Altyapısı uygulaması için toplu işlev bağlamak için .NET Framework derleme uygulaması içeren gerekir ilk karşıya yüklenemiyor, örnek olarak SQL Server bir DERLEME oluşturma deyimkullanarak.
Not
Varsayılan olarak, yeteneğini SQL Server clr çalıştırmak için kodudur kapatır.Oluşturmak, değiştirmek ve yönetilen kod modülleri başvuru veritabanı nesnelerini bırakın, ancak bu modülleri kod örnek çalışmaz SQL Server sürece clr seçeneği etkin kullanarak etkin sp_configure.
Sözdizimi
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 }
Bağımsız değişkenler
schema_name
Kullanıcı tanımlı toplu işlev ait olduğu şema addır.aggregate_name
Oluşturmak istediğiniz toplu işlev addır.@param_name
Kullanıcı tanımlı topluiçinde bir veya daha fazla parametre.topluişlev çalıştırıldığında bir parametre değeri kullanıcı tarafından sağlanmalıdır. Parametre adı kullanarak belirttiğiniz bir "at" oturum (@) ilk karakteri olarak.Parametre adı için olan kurallara uymak zorunda tanımlayıcıları.' % S'işlevi işleviçin yerel parametreleridir.system_scalar_type
Herhangi biri olan SQL Server Sistem skaler veri türlerine tutun değeri giriş parametresi veya dönüş değeri.Tüm skaler veri türlerinin parametre olarak bir kullanıcı tanımlı topluiçin dışında kullanılabilir text, ntext, ve image.Nonscalar türleri, gibi cursor ve table, tarif edilemez.udt_schema_name
CLR kullanıcı tanımlı türü ait olduğu şema addır.Belirtilmezse, Veritabanı Altyapısı başvuruları udt_type_name aşağıdaki sırayla:Yerel SQL türü ad.
Geçerli veritabanında geçerli kullanıcının varsayılan şema.
Dbo geçerli veritabanında şema.
udt_type_name
Zaten geçerli veritabanında oluşturulmuş bir CLR kullanıcı tanımlı türü addır.udt_schema_name Belirtilmezse, SQL Server varsayar türü ait olduğu şema geçerli kullanıcı.assembly_name [ **.**class_name ]
Kullanıcı tanımlı topluişlev ve isteğe bağlı olarak, şema adı ile bağlamak için derleme belirtir derleme ait olduğu ve kullanıcı tanımlı topluuygulayan derleme sınıfın adı. derleme zaten veritabanında DERLEME oluşturma deyimkullanılarak oluşturulmuş olması gerekir.class_namebir geçerli olması SQL Server tanımlayıcısı ve KAÇINCI derlemeiçinde bulunan bir sınıf adı.class_namead alanları, C# gibi sınıf yazmak için kullanılan programlama dili kullanıyorsa, bir ad alanıyla nitelenmiş ad olabilir.class_name Belirtilmezse, SQL Server ile aynı olduğu varsayılır aggregate_name.
Açıklamalar
Başvurulan derleme sınıf assembly_name ve kendi yöntemlerini uygulayan bir kullanıcı tanımlı toplu işlev örnek için tüm gereksinimleri karşılamak SQL Server.Daha fazla bilgi için, bkz. clr kullanıcı tanımlı toplamları.
İzinler
TOPLAMA oluşturma izni ve ayrıca dış ad yan tümcetümcesinde belirtilen derleme başvurular izni gerektirir.
Örnekler
Aşağıdaki örnek varsayar SQL Server veritabanı altyapısı örneklerini yerel bilgisayar ve örnek uygulama derlenmiş StringUtilities.csproj varsayılan konuma yüklenir.Daha fazla bilgi için, bkz. SQL Server Örnekleri ve Örnek Veritabanlarının Yüklenmesiyle İlgili Önemli Noktalar.
topluörnek oluştururConcatenate. derleme toplu oluşturulur önceStringUtilities.dll kayıtlı yerel veritabanı.
USE AdventureWorks2008R2;
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\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf', 'Microsoft SQL Server\90\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