Aracılığıyla paylaş


Deterministic ve Nondeterministic işlevler

Deterministic işlevleri aynı sonucu her saat belirli bir her çağrıldıklarında dönmek küme giriş değerleri ve belirli bir veritabanını aynı durumu.Nondeterministic işlevleri, veritabanı durumunu, bunlar aynı kalır, belirli bir giriş değerleri kümesini her çağrıldıklarında farklı sonuçlar döndürebilir.

Birkaç özellik yeteneklerini saptamak ve kullanıcı tanımlı işlevler, SQL Server Database Engine işlev çağrısı hesaplanmış bir sütun dizinlerde aracılığıyla veya işlev başvurusu, dizin oluşturulmuş görünümler yoluyla işlevinin sonuçlarını dizin oluşturmak için . Fonksiyonun determinism bir özellik var.Örneğin, kümelenmiş dizin görünümü nondeterministic tüm işlevleri başvuruyorsa bir görünüm oluşturulamıyor.Işlevler, determinism dahil olmak üzere, özellikleri hakkında daha fazla bilgi için bkz: Kullanıcı tanımlı fonksiyonu tasarım yönergeleri.

Bu konu, yerleşik sistem işlevleri determinism ve kullanıcı tanımlı işlevler deterministic özelliğini etkisi genişletilmiş saklı yordam çağrısı içerdiğinde tanımlar.

Yerleşik işlev Determinism

Yerleşik herhangi bir işlev determinism etkileyen edemiyor.Her yerleşik fonksiyon deterministic veya bağlı nondeterministic nasıl işlev tarafından uygulanan üzerinde SQL Server.

toplamak ve dize yerleşik fonksiyonların deterministic tümü.Bu işlevlerin listesi için bkz: toplamak işlevleri (Transact-SQL) ve Dize işlevleri (Transact-SQL).

toplamak dışında yerleşik işlevler ve dize işlevlerinin kategorilerini aşağıdaki yerleşik işlevler her zaman belirli olur.

abs

DATEDIFF

parsename

acos

DAY

GÜÇ

asin

DERECE

RADYAN

atan

BKL

ROUND

ATN2

KAT

İŞARETİ

TAVANA

isnull

sin

BİRLEŞİM

isnumeric

KARE

cos

GÜNLÜK

sqrt

cot

LOG10

tan

VERİUZUNLUĞU

MONTH

YEAR

DATEADD

nullif

 

Aşağıdaki işlevler, her zaman belirli değildir, ancak dizin oluşturulmuş görünümler veya hesaplanmış sütun dizinlerde, belirli bir biçimde belirlendiğinde kullanılabilir.

İşlev

Açıklamalar

ATAMA

Deterministic ile kullanılan sürece datetime, smalldatetime, veya sql_variant.

ÇEVİR

Bunlardan biri koşulları sürece Deterministic bulunmaktadır:

  • Kaynak türü sql_variant.

  • Hedef türü sql_variant ve kaynak türünü nondeterministic.

  • Kaynak veya hedef türü datetime veya smalldatetime, diğer kaynak veya hedef türü bir karakter dizesidir ve nondeterministic stil belirtilir. Deterministic için , stili parametresi, bir sabit olmalıdır.100 Küçük veya eşit stilleri için 20 ve 21 nondeterministic, dışında Ayrıca, stilleri.Deterministic 106, 107, 109 ve 113 stilleri dışında stil 100'den büyük var.

SAĞLAMA TOPLAMI

Deterministic, sağlama toplamı(*) dışında.

isdate

Deterministic yalnızca, CONVERT işlev ile kullanıldığında, CONVERT stili parametresi belirtildi ve stili, 0, 100, 9 veya 109 eşit değil.

S_SAYI_ÜRET

Deterministic yalnızca when S_SAYı_ÜRET olan bir seed parametre belirtildi.

Tüm yapılandırma, imleç, meta veriler, güvenlik ve sistem istatistik işlevleri nondeterministic var.Bu işlevlerin listesi için bkz: Yapılandırma işlevler (Transact-SQL), Imleç işlevler (Transact-SQL), Meta veriler işlevler (Transact-SQL), Güvenlik işlevleri (Transact-SQL), ve Sistem istatistik işlevleri (Transact-SQL).

Her zaman aşağıdaki yerleşik işlevler diğer kategorilerden nondeterministic olur.

@@ BAĞLANTILARI

@@ total_read

@@ cpu_busy

@@ total_write

@@ dbts

current_timestamp

@@ BOŞTA

getdate

@@ io_busy

getutcdate

@@ max_connections

get_transmission_status

@@ pack_received

min_active_rowversion

@@ pack_sent

newid

@@ packet_errors

newsequentialid

@@ timeticks

S_SAYI_ÜRET

@@ total_errors

textptr

Genişletilmiş arama yordamlar işlevler tarafından depolanan...

Genişletilmiş saklı yordamlar arama işlevleri, nondeterministic olduklarından genişletilmiş saklı yordamlar, veritabanı üzerinde yan etkilere neden olabilir.Genel bir durumu, veritabanı için bir güncelleştirme gibi değişiklikler yan etkileri olan bir tablo, örneğin, bir dosya için bir dosya veya; ağ gibi bir dış kaynak değiştirme veya bir e-posta iletisi göndererek.Genişletilmiş bir yürütürken ayarlamak tutarlı bir sonuç döndüren üzerinde güvenmemelisiniz saklı yordam kullanıcı tanımlı bir işlevi.Veritabanı üzerinde yan etkileri oluşturduğunuz kullanıcı tanımlı işlevler önerilmez.

Gelen içinde bir işlev çağrıldığında, genişletilmiş saklı yordam sonuç kümeleri için döndüremez istemci.Tüm açık Veri Hizmetleri istemciye sonuç kümeleri döndüren API bir dönüş kodu BAŞARıSıZ olacaktır.

Genişletilmiş saklı yordam yeniden bağlanabilir SQL Server. Ancak, yordamı genişletilmiş saklı yordam çağıran özgün işlev olarak aynı hareket katılamaz.

Benzer şekilde etkinleştirilmelerinde bir toplu iş veya saklı yordam, genişletilmiş saklı yordam bağlamında çalıştırılır Microsoft Hangi Windows Güvenlik hesabı SQL Server çalışıyor. Genişletilmiş saklı yordam sahibine bu yordamı çalıştırmak için diğer kullanıcıların izinleri verme, düşünmelisiniz.