Funcții deterministe și non-deterministe

Funcții deterministe de fiecare dată când returnează același rezultat în cazul în care acestea oferă același set de valori de intrare și de a folosi aceeași stare de bază de date. Funcții nedeterminista pot returna rezultate diferite de fiecare dată, chiar dacă le oferi același set de valori de intrare și de a folosi aceeași stare de bază de date.

funcțiile definite de utilizator au mai multe proprietăți care determină capacitatea de SQL Server Database Engine indicele de bază în funcție de indicii cu ajutorul coloanelor calculate, cauzând funcția și folosind vederi indexate care se leagă de acesta. Funcții determinism - una dintre aceste proprietăți. De exemplu, în reprezentarea nu se poate crea un index cluster, în cazul în care se referă la orice funcție non-determinist. Pentru mai multe informații despre proprietățile funcțiilor, inclusiv determinism, a se vedea. În secțiunea de Reguli pentru scrierea funcțiilor definite de utilizator.

Această secțiune descrie determinismul funcțiilor sistemului integrat și impactul lor asupra determinismul proprietatea funcțiilor definite de utilizator, în cazul în care conține un apel la proceduri stocate extinse.

Toate statisticile și șir de funcții încorporate deterministe. O listă a acestor funcții pot fi găsite. În secțiunea funcțiilor statistice (Transact-SQL) și String Funcții (Transact-SQL).

Următoarele funcții încorporate care sunt diferite de funcțiile statistice și șirul, întotdeauna determinat.

Funcțiile care apelează extinse proceduri stocate, non-deterministe, deoarece procedura stocată extinsă poate avea efecte adverse asupra bazei de date. Efecte secundare - se schimba starea globală a bazei de date ca tabelul de actualizare, resursa de rețea externă sau fișier. De exemplu, astfel de acțiuni pot include modificări la fișier, sau trimiterea unui mesaj prin e-mail. Când apelați procedura memorată din funcția extinsă definită de utilizator nu ar trebui să se bazeze pe faptul că un set de rezultate consistente este returnat. Nu se recomandă să aplice funcții definite de utilizator, care au efecte secundare asupra bazei de date.

Atunci când apelați o funcție de proceduri stocate extinse nu se pot returna un rezultat setat la client. API-interfață cu privire la orice serviciu de date deschise care returnează un set de rezultate pentru client, va fi FAIL codul retur.

Procedura stocată Extended se poate conecta înapoi la SQL Server. Cu toate acestea, procedura nu poate adera la aceeași tranzacție ca funcția inițială care a apelat procedura stocată extinsă.

În mod similar, apelurile dintr-un lot sau o procedură stocată, procedură stocată extinsă rulează în cadrul Microsoft Windows protecție cont de utilizator, prin rularea SQL Server. Proprietarul unei proceduri stocate extins trebuie să aibă în vedere acest lucru atunci când se acordă permisiunea de a efectua această procedură altor utilizatori.

concepte de bază

alte resurse

Ajutor și Asistență

schimbări
  • Adăugat informații la descrierea funcției CONVERT, explicând că utilizarea CONVERT conduce la rezultate deterministe, în cazul în care sursa sau țintă de tip - nu datetime sau smalldatetime. cealaltă sursă sau țintă de tip - un șir de caractere și un stil nedeterminist este specificat.
  • De asemenea, explica ce stiluri sunt deterministe si non-determinist.

adaugand comunitate

Rezultate: Moștenit protejate

A fost utilă această pagină? Da Nu

1500 caractere rămase

Vă mulțumim! Vă mulțumim pentru examinare. Opinia ta este foarte importanta pentru noi.

centre de dezvoltare

comunitate

Contactați-ne