Je créais une table dans ma database SQL Server lorsqu'un atsortingbut spécifique Deterministic
des colonnes de la database a attiré mon attention. S'il vous plaît voir la capture d'écran ci-dessous:
Je suis déjà au courant des fonctions déterministes et non-déterministes de SQL Server mais je veux savoir que cela s'applique même aux types de données de données dans SQL Server de quelque manière que ce soit?
La raison pour laquelle je request est que j'ai scanné littéralement tous les types de données disponibles dans SQl Server v2008 et v2012 mais la valeur du champ Deterministic
montré Yes
pour chacun d'entre eux. Il n'a pas montré No
pour un seul type de données.
Donc, ma question est que c'est un atsortingbut approprié de tout type de données dans SQL Server qui affecte encore la façon dont les valeurs sont stockées dans la colonne ou il est juste un inheritance du passé, peut être de SQL Server 2000 ou SQL Server 2005 où utilisés pour certains types de données qui étaient de nature non déterministe. Toute information sera très utile pour comprendre cette caractéristique des types de données dans SQL Server. Avons-nous un type de données dans SQL Server à ce jour qui est de nature non déterministe?
Comme je n'ai pas vu de No
pour les types de données que j'ai eu plus confus. J'ai aussi beaucoup googlé mais chaque search m'amène à des fonctions déterministes et non-déterministes de SQL Server comme celle ci-dessous et personne ne parle de caractéristique Non-deterministic
relative aux types de données de SQL Server.
https://technet.microsoft.com/en-us/library/ms178091(v=sql.110).aspx
Si vous lisez attentivement cette documentation MSDN , vous findez:
IsDeterministic – La colonne est déterministe. Cette propriété s'applique uniquement aux colonnes calculées et aux colonnes de vue.
Elle s'applique aux colonnes (calculées, vue) dérivées d'autres colonnes avec des fonctions non-déterministes impliquées.
Exemples:
CREATE TABLE Deterministic ( ID int, Calculated AS SYSDATETIME() ) SELECT COLUMNPROPERTY(OBJECT_ID('Deterministic'), 'Calculated', 'IsDeterministic') IsDeterministic --Returns 0
Si vous créez une vue sur cette table comme suit et exécutez la requête suivante
CREATE VIEW vDeterministic AS SELECT ID, Calculated, DATEADD(D, 1, Calculated) Tomorrow FROM Deterministic GO SELECT 'Calculated' ColumnName, COLUMNPROPERTY(OBJECT_ID('vDeterministic'), 'Calculated', 'IsDeterministic') IsDeterministic UNION ALL SELECT 'Tomorrow', COLUMNPROPERTY(OBJECT_ID('vDeterministic'), 'Tomorrow', 'IsDeterministic')
Vous recevez également des colonnes non déterministes
ColumnName IsDeterministic ---------- --------------- Calculated 0 Tomorrow 0