Quand utiliser des references de colonnes en trois parties dans SQL 2014

Tout d'abord, excuses si c'est dans la mauvaise section, ou le mauvais style. Chassé pour cette réponse pendant un moment, en vain.

Imaginez que vous avez une requête SQL (échantillon) dans SQL 2014 –

SELECT dbo.Users.Surname, dbo.Accounts.Type FROM dbo.Users INNER JOIN dbo.Accounts ON (dbo.Users.Id = dbo.Accounts.Id) 

Jusqu'à présent, c'est le format que j'ai utilisé – qualifiant pleinement les objects de la table avec [schéma]. [Nom_table]. [Colonne].

Cependant, en regardant les fonctionnalités du moteur de database obsolète SQL 2014 , il est dit que ce style n'est plus standard –

Les noms en deux parties correspondent au comportement conforme aux normes.

Après avoir creusé pendant un moment, j'ai trouvé les conventions de syntaxe Transact-SQL , où il est dit –

Pour éviter les erreurs de résolution de noms, nous vous recommandons de spécifier le nom du schéma chaque fois que vous spécifiez un object de scope schématique.

Donc, je suis un peu confus quant à la façon dont mon petit fragment de code devrait être écrit. Dois-je seulement utiliser le schéma en référençant les tables, mais en faisant reference aux colonnes, ignorer le schéma et utiliser simplement les noms de tables? Ou suppose-t-il que tous les objects de table doivent avoir un alias?

Encore une fois, des excuses pour la subjectivité potentielle de cette question. Mais essentiellement, je request comment écrire du SQL qui n'utilise pas une fonctionnalité obsolète de SQL 2014, mais qui se lit bien quand on joint plusieurs tables.

Il dit que la fonctionnalité obsolète s'applique aux colonnes de reference, pas aux tables. Pour clarifier, imaginez deux déclarations:

 SELECT dbo.Orders.ID FROM dbo.Orders 

et

 SELECT Orders.ID FROM dbo.Orders 

Le premier est obsolète, pas le dernier.

Pour éviter les erreurs de résolution de noms, nous vous recommandons de spécifier le nom du schéma chaque fois que vous spécifiez un object de scope schématique.

Cela s'applique au schéma par défaut de l'user. Si l'user a un schéma par défaut dit 'Personne' et deux tables avec le même nom 'dbo.Persons', 'Person.Persons' existe dans la database, puis si cet user exécute:

 SELECT * FROM Persons 

il obtiendra les résultats de la table dans le schéma de la personne, même s'il voulait des données de dbo.

Donc, la réponse est:

Utilisation

 SELECT Orders.ID FROM dbo.Orders