Configuration des serveurs liés: serveur sql ms et teradata

Bonjour à tous! J'ai décidé d'écrire cet article pour une raison simple - je n'ai pas trouvé d'instructions détaillées pour configurer un serveur lié distant entre les serveurs teradata et ms sql.

Sberbank stocke des données sur différents serveurs: oracle, teradata, mssql. Souvent (parfois, plusieurs fois par jour), mes collègues et moi devons effectuer des actions dites «efficaces» est très difficile: vous écrivez une demande, exportez des données vers un fichier, importez-les sur le serveur mssql et travaillez. Le temps consacré à une demande est supérieur à 3 heures (environ 90 millions de lignes).


Travail efficace

La raison de ces actions complexes est le manque de privilèges pour créer des tables sur des serveurs de teradata. C'est pourquoi nous «téléchargeons» les données sur le serveur ms sql (tout va bien avec les autorisations). C'était une introduction, et maintenant je passe à la description de la séquence d'actions.

Remarque : l'instruction a été préparée à l'aide de SQL Server Management Studio 12 et de Teradata Client ver 15 (si la version Teradata est inférieure, par exemple 14, des logiciels supplémentaires doivent être téléchargés à partir du site Web officiel).

Étape 1 - Configurer une connexion ODBC

Allez: Panneau de configuration \ Système et sécurité \ Administration \ Sources de données ODBC

Dans la section "DSN personnalisé", cliquez sur "Ajouter". Ensuite, sélectionnez le pilote Teradata et remplissez les champs.

Important: n'oubliez pas le nom de la nouvelle source. Nous en avons encore besoin.

Étape 2 - Serveur lié

Ouvrez Management Studio - Objets serveur - Serveurs liés - créez un serveur lié.

Les champs de la section Général sont: Serveur lié - un nom arbitraire, Fournisseur - Fournisseur Microsoft OLE DB pour les pilotes ODBC, Nom du produit - ServiceNow, Source de données - le nom de la source de données qui a été créée à "l'étape 1".


Section de serveur lié "Général"

Champs de la section "Sécurité": Connexion à distance - le nom du KM sur le serveur Teradata, Avec mot de passe - le mot de passe du KM sur le serveur Teradata.


Section de sécurité du serveur lié

Pour que personne ne puisse se connecter via le serveur lié (teradata) sous mon KM, j'ajouterai un mappage des noms de connexion sur les serveurs locaux et distants. Enregistré.


Connexions correspondantes sur les serveurs locaux et distants

Ouvrez une nouvelle demande. Nous écrivons select * from openquery (SERVICENOW, 'select * from dual') et nous obtenons une erreur. Accès refusé. Allez-y.


Exemple d'erreur

Étape 3 - SQLEXPRESS et KM intégré

Nous allons dans le Gestionnaire de configuration SQL - Propriétés de SQL Server (MSSQLSERVER). Remplacez la coche par «Utiliser le KM (système local) intégré pour la saisie».


SQLEXPRESS et échographie intégrée

Si vous exécutez Management Studio 12 en tant qu'administrateur, cela fonctionnera. Nous n'avons pas besoin de l'administrateur. Nous continuons de configurer.

Étape 4 - SQLEXPRESS et service réseau

Nous allons dans le Gestionnaire de configuration SQL - Propriétés de SQL Server (MSSQLSERVER). Remplacez la coche par «Utiliser le KM (service réseau) intégré pour la connexion», mais sous KM NT Service \ MSSQLSERVER .


SQLEXPRESS et service réseau

Ça devrait être comme ça.


Gestionnaire de configuration SQL Server

Étape 5 - Service de composants

win + R - dcomcnfg - ordinateurs - propriétés mon ordinateur - onglet des propriétés par défaut.
Remplissez l'exemple ci-dessous:


Service de composants

Étape 6 - Configurer DCOM

win + R - dcomcnfg - ordinateurs - mon ordinateur - configuration DCOM - propriétés msdainitialize. Copiez l'ID d'application / le code d'application. Obligatoire pour rechercher un objet dans le registre Windows.


Propriétés de l'objet Msdainitialize

Prochaine victoire + R - recherche regedit. Vous devez trouver l'objet dans le registre, par le code d'application, et entrez son autorisation.


Registre d'objets Msdainitialize

Contrôle total pour l'administrateur local du PC.


Propriétés de l'objet msdainitialize dans le registre WINDOWS

Confirmez et enregistrez. Nous l'avons fait pour que la section Sécurité de l'objet (code d'application) devienne active.


Section de sécurité de l'objet msdainitialize

Personnaliser - Modifier (le bouton est devenu actif) - nous ajoutons tous les droits au service NT Service \ MSSQLSERVER .


Droits complets pour le service MSSQLSERVER

Vous devez accorder des droits au service dans les sections: autorisation de lancement et d'activation, autorisation d'accès, autorisation de configuration. Ensuite, vous devez redémarrer le service MSQSQLSERVER - Restart / Restart NT Service \ MSSQLSERVER .

Étape 7 Sécurité COM

win + R - dcomcnfg - ordinateurs - mon ordinateur - configuration DCOM
Modifiez la valeur par défaut en ajoutant le service NT Service \ MSSQLSERVER . Attribuez-lui les autorisations maximales pour les partitions: autorisation de lancement et d'activation, autorisation d'accès.


Autorisation d'accès

Ensuite, vous devez redémarrer le service MSQSQLSERVER - Restart / Restart NT Service \ MSSQLSERVER . Exécutez select * from openquery (SERVICENOW, 'select * from dual'). Ça marche.


Exécution de requête

J'espère que ce guide vous aidera avec les paramètres de la technologie d'accès à distance. Maintenant, nous importons les données immédiatement sur le serveur mssql (en économisant non pas des minutes, mais des heures). Une requête qui fonctionnait pendant environ 3 heures (exportation des données vers un fichier, importation vers mssql), après avoir configuré la technologie, est traitée en 47 secondes (importation du résultat de la requête immédiatement vers mssql).

Source: https://habr.com/ru/post/fr427437/


All Articles