Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation des fonctionnalités Babelfish dont la mise en œuvre est limitée
Chaque nouvelle version de Babelfish ajoute la prise en charge d'autres fonctionnalités qui s'alignent mieux avec la fonctionnalité et le comportement de T-SQL. Cependant, il existe certaines fonctionnalités non prises en charge et des différences dans la mise en œuvre actuelle. Dans ce qui suit, vous pouvez trouver des informations sur les différences fonctionnelles entre Babelfish et T-SQL, avec quelques solutions de contournement ou des notes d'utilisation.
À partir de la version 1.2.0 de Babelfish, les fonctionnalités suivantes ont actuellement des mises en œuvres limitées :
Catalogues SQL Server (vues système) — les catalogues
sys.sysconfigures
,sys.syscurconfigs
etsys.configurations
ne prennent en charge qu'une seule configuration en lecture seule. Le cataloguesp_configure
n'est actuellement pas pris en charge. Pour plus d'informations sur les autres vues SQL Server mises en œuvre par Babelfish, consultez Obtention d'informations dans le catalogue système Babelfish.GRANT permissions (ACCORDER des autorisations) — la fonction GRANT...TO PUBLIC est prise en charge, mais la fonction GRANT...TO PUBLIC WITH GRANT OPTION n'est actuellement pas prise en charge.
SQL Server ownership chain and permission mechanism limitation (Limitation de la chaîne de propriété et du mécanisme d'autorisation de SQL Server) — dans Babelfish, la chaîne de propriété de SQL Server fonctionne pour les vues mais pas pour les procédures stockées. Cela signifie que les procédures doivent disposer d'un accès explicite aux autres objets appartenant au même propriétaire que les procédures appelantes. Dans SQL Server, accorder à l'appelant les autorisations EXECUTE sur la procédure est suffisant pour appeler d'autres objets appartenant au même propriétaire. Dans Babelfish, l'appelant doit également disposer d'autorisations sur les objets auxquels la procédure accède.
Resolution of unqualified (without schema name) object references (Résolution des références d'objets non qualifiées (sans nom de schéma)) — lorsqu'un objet SQL (procédure, vue, fonction ou déclencheur) fait référence à un objet sans le qualifier avec un nom de schéma, SQL Server résout le nom de schéma de l'objet en utilisant le nom de schéma de l'objet SQL dans lequel la référence se produit. Actuellement, Babelfish résout ce problème différemment, en utilisant le schéma par défaut de l'utilisateur de la base de données qui exécute la procédure.
Default schema changes, sessions, and connections (Modifications du schéma par défaut, sessions et connexions) — si les utilisateurs modifient leur schéma par défaut avec
ALTER USER...WITH DEFAULT SCHEMA
, la modification prend effet immédiatement dans cette session. Cependant, pour les autres sessions actuellement connectées appartenant au même utilisateur, le timing diffère, comme suit :Pour SQL Server : — la modification prend effet immédiatement sur toutes les autres connexions de cet utilisateur.
Pour Babelfish : — Le changement prend effet pour cet utilisateur pour les nouvelles connexions seulement.
-
ROWVERSION and TIMESTAMP datatypes implementation and escape hatch setting (Mise en œuvre des types de données ROWVERSION et TIMESTAMP et réglage des trappes de secours) — les types de données ROWVERSION et TIMESTAMP sont maintenant pris en charge dans Babelfish. Pour utiliser ROWVERSION ou TIMESTAMP dans Babelfish, vous devez modifier le paramètre de la trappe de secours
babelfishpg_tsql.escape_hatch_rowversion
de sa valeur par défaut (strict) àignore
. La mise en œuvre Babelfish des types de données ROWVERSION et TIMESTAMP est sémantiquement identique à celle de SQL Server, avec les exceptions suivantes :La fonction @@DBTS intégrée se comporte de la même manière que SQL Server, mais avec de petites différences. Plutôt que de renvoyer la dernière valeur utilisée pour
SELECT @@DBTS
, Babelfish génère un nouvel horodatage, en raison du moteur de base de données PostgreSQL sous-jacent et de son implémentation MVCC (Multiversion Concurrency Control).Dans le serveur SQL, chaque ligne insérée ou mise à jour se voit attribuer une valeur unique ROWVERSION/TIMESTAMP. Dans Babelfish, chaque ligne insérée et mise à jour par la même instruction se voit attribuer la même valeur ROWVERSION/TIMESTAMP.
Par exemple, lorsqu'une instruction UPDATE ou INSERT-SELECT affecte plusieurs lignes, dans SQL Server, les lignes affectées présentent toutes des valeurs différentes dans leur colonne ROWVERSION/TIMESTAMP. Dans Babelfish (PostgreSQL), les lignes ont la même valeur.
Dans SQL Server, lorsque vous créez une nouvelle table avec SELECT-INTO, vous pouvez attribuer une valeur explicite (telle que NULL) à une colonne ROWVERSION/TIMESTAMP à créer. Lorsque vous faites la même chose dans Babelfish, une valeur ROWVERSION/TIMESTAMP réelle est attribuée à chaque ligne de la nouvelle table pour vous, par Babelfish.
Ces différences mineures dans les types de données ROWVERSION/TIMESTAMP ne devraient pas avoir d'impact négatif sur les applications fonctionnant avec Babelfish.
Création de schéma, propriété et autorisations – Les autorisations pour créer des objets et y accéder dans un schéma détenu par un utilisateur non-DBO (à l'aide de CREATE SCHEMA
) diffèrent pour les utilisateurs de SQL Server et les utilisateurs de Babelfish non-DBO, comme le montre le tableau suivant :schema name
AUTHORIZATION user name
L'utilisateur de base de données (non-DBO) qui possède le schéma peut effectuer les opérations suivantes : | SQL Server | Babelfish |
---|---|---|
Créer des objets dans le schéma sans subventions supplémentaires par le DBO ? |
Non |
Oui |
Accéder aux objets créés par DBO dans le schéma sans octrois supplémentaires ? |
Oui |
Non |