Aracılığıyla paylaş


Sağlama toplamı (Transact-sql)

Döner sağlama toplamı değeri tablonun bir satırında veya bir ifadeler listesinde hesaplanır. checksum karma dizinleri binasında yöneliktir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CHECKSUM ( * | expression [ ,...n ] )

Bağımsız değişkenler

  • *
    Hesaplama tablosunun tüm sütunları üzerinde olduğunu belirtir. Sağlama toplamı, herhangi bir sütun birifadenoncomparable veri türü ise hata döndürür. Birifadenoncomparable veri türleri text, ntext, image, xml, ve cursorda sql_variantönceki türlerinden birinde temel türü olarak.

  • expression
    Olan bir ifade birifadenoncomparable veri türü dışında herhangi bir tür.

Dönüş Türleri

int

Açıklamalar

checksum sağlama toplamı argümanlar listesini adlı bir karma değeri hesaplar. Karma değeri karma dizinleri binasında yöneliktir. checksum bağımsız sütun ve dizin hesaplanan sağlama toplamı değeri oluşturulur, sonuç, karma bir dizindir. Bu eşitlik arar sütunlar üzerinde kullanılabilir.

Sağlama toplamı karşılayan bir karma işlevin özelliklerine: checksum ifadeler iki liste üzerinde uygulanan iki listelere karşılık gelen elemanları aynı tip ve eşittir (=) işlecini kullanarak karşılaştırıldığında eşit aynı değerini döndürür. Bu tanım, belirli türde null değerleri karşılaştırmak için eşit olarak kabul edilir. İfade listedeki değerlerden biri değişirse, sağlama toplamı listesinin de genellikle değiştirir. Ancak, orada sağlama değişmez küçük bir şans. Bu nedenle, sağlama toplamı değerlerinin değişip değişmediğini, uygulamanızın bir değişiklik bazen eksik dayanabilir sürece algılamaya kullanmanızı öneririz değil. Kullanmayı HashBytes onun yerine. Bir MD5 hash algoritması belirtildiğinde, iki farklı giriş için aynı sonucu döndüren HashBytes çok checksum daha düşük olasılığıdır.

İfadelerin checksum sonuç değerini etkiler. checksum(*) ile kullanılan sütunların sırasını, sütun tablo veya Görünüm tanımında belirtilen sıradır. Bu, hesaplanmış sütunlar içerir.

Sağlama toplamı değeri harmanlamayı bağlıdır. Farklı harmanlama ile depolanan değerin farklı bir sağlama toplamı değeri döndürür.

Örnekler

Aşağıdaki örnekler kullanarak CHECKSUMkarma dizinler oluşturmak için. Tablo için hesaplanan sağlama sütun ekleyerek karma endeksi inşa dizini Oluşturulmakta ve sonra dizin sağlama toplamı sütunu oluşturma.

-- Create a checksum index.
SET ARITHABORT ON;
USE AdventureWorks2012; 
GO
ALTER TABLE Production.Product
ADD cs_Pname AS CHECKSUM(Name);
GO
CREATE INDEX Pname_index ON Production.Product (cs_Pname);
GO

-- Create a checksum index.
SET ARITHABORT ON;
USE AdventureWorks2012; 
GO
ALTER TABLE Production.Product
ADD cs_Pname AS CHECKSUM(Name);
GO
CREATE INDEX Pname_index ON Production.Product (cs_Pname);
GO

Sağlama dizin bir karma endeksi sıralanacak uzun karakter sütunu sütundur özellikle dizin oluşturma hızı artırmak için kullanılabilir. Eşitlik arar sağlama dizin kullanılır.

/*Use the index in a SELECT query. Add a second search 
condition to catch stray cases where checksums match, 
but the values are not the same.*/
SELECT * 
FROM Production.Product
WHERE CHECKSUM(N'Bearing Ball') = cs_Pname
AND Name = N'Bearing Ball';
GO

/*Use the index in a SELECT query. Add a second search 
condition to catch stray cases where checksums match, 
but the values are not the same.*/
SELECT * 
FROM Production.Product
WHERE CHECKSUM(N'Bearing Ball') = cs_Pname
AND Name = N'Bearing Ball';
GO

Hesaplanmış bir sütun üzerinde dizin oluşturma materializes sağlama sütun ve herhangi bir değişiklik ProductNamedeğer sağlama sütuna yayılan. Alternatif olarak, doğrudan sütunu dizine dizin inşa edilecek. Uzun anahtar değerleri olan, ancak normal bir dizin sağlama dizin olarak kullanılmaz.

Ayrıca bkz.

Başvuru

checksum_agg (Transact-sql)

hashbytes (Transact-sql)

BINARY_CHECKSUM (Transact-sql)