{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/05/03/limportance-de-python-dans-ladministration-de-sql-server-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/05/03/limportance-de-python-dans-ladministration-de-sql-server-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/05/03/limportance-de-python-dans-ladministration-de-sql-server-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"L&#39;importance de Python dans l&#39;administration de SQL Server\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-05-03T15:09:35+00:00","modified_at":"2019-05-03T15:09:35+00:00","word_count":2213,"reading_time_seconds":664,"summary":"Certains de mes articles précédents sur Python donnaient un aperçu des bases et de l&#39;utilisation de Python dans SQL Server 2017. Cet article vise à rassembler toutes les pièces manquantes et à démontrer l’importance de l’utilisation de la programmation Python dans SQL Server. Beaucoup disent que PowerShell a l&#39;avantage sur Python dans certains aspects de [&hellip;]","summary_points":["Certains de mes articles précédents sur Python donnaient un aperçu des bases et de l&#39;utilisation de Python dans SQL Server 2017.","Cet article vise à rassembler toutes les pièces manquantes et à démontrer l’importance de l’utilisation de la programmation Python dans SQL Server.","Beaucoup disent que PowerShell a l&#39;avantage sur Python dans certains aspects de l&#39;administration de la base de données.","Moi aussi, je ressens la même impression que de nombreux passionnés de technique, mais avec une connaissance très limitée, nous pouvons également voir le pouvoir de Python."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"3ff90e6e340c440a016b1aea0a210cf1","plain_text":"Certains de mes articles précédents sur Python donnaient un aperçu des bases et de l&#39;utilisation de Python dans SQL Server 2017.\n\n  Cet article vise à rassembler toutes les pièces manquantes et à démontrer l’importance de l’utilisation de la programmation Python dans SQL Server.\n\n\n  Beaucoup disent que PowerShell a l&#39;avantage sur Python dans certains aspects de l&#39;administration de la base de données. Moi aussi, je ressens la même impression que de nombreux passionnés de technique, mais avec une connaissance très limitée, nous pouvons également voir le pouvoir de Python. Peut-être, au lieu de comparer PowerShell et Python, nous pouvons les considérer comme des technologies complémentaires.\n\n  En 2016, R, le langage de programmation informatique statistique a été intégré à la version de SQL Server, nommée pour la même année. L’autre côté de la médaille était absent, car Python est également un langage de premier plan pour l’apprentissage automatique et compte même un grand nombre d’utilisateurs. Dans SQL Server 2017, Python est intégré. Maintenant, R et Python sont sous le même parapluie de la fonctionnalité appelée services d&#39;apprentissage automatique.\n\n  Comme Python est un langage de programmation commun adopté par les scientifiques de données et les administrateurs de base de données, la possibilité d’exécuter du code Python en tant que script T-SQL permet aux fonctions d’apprentissage automatique de traiter directement de grandes quantités de données. Premièrement, il n&#39;est plus nécessaire d&#39;extraire des données de la base de données avant de pouvoir les traiter via un programme client. Cela nous offre des avantages importants en termes de sécurité, d&#39;intégrité et de conformité, qui surviennent lorsque des données sont par ailleurs déplacées en dehors de l&#39;environnement hautement contrôlé dans le moteur de base de données. De plus, les calculs sont effectués sur le serveur lui-même sans avoir à transférer les données à un client, ce qui impose une charge importante sur le trafic réseau. Cela signifie également que vous pouvez effectuer des calculs sur l&#39;intégralité du jeu de données sans avoir à prélever des échantillons représentatifs, ce qui est courant lors du traitement de données sur une machine distincte. Et comme les données restent en place, vous pouvez tirer pleinement parti des avantages en termes de performances apportés par les technologies SQL Server telles que les tables en mémoire et les index de magasin de colonnes. Le code Python est également très facile à déployer et peut être écrit directement dans une commande Transact-SQL.\n\n  Ensuite, SQL Server 2017 prend en charge l&#39;installation de tous les packages Python dont nous pourrions avoir besoin afin que vous puissiez vous appuyer sur la vaste collection de fonctionnalités Open Source développées par la communauté Python plus large. Enfin, l&#39;intégration Python est disponible dans toutes les éditions de SQL Server 2017, y compris l&#39;édition Express gratuite. Ainsi, quelle que soit l&#39;ampleur de votre application, vous pouvez tirer parti de l&#39;intégration Python.\n\n  Pour vous aider à démarrer, SQL Server 2017 inclut un certain nombre de bibliothèques d&#39;Anaconda, une plate-forme de science de données très populaire. De plus, Microsoft a créé deux bibliothèques installées avec Machine Learning Services.\n\n\nRevoscalepy\nRevoscalepy est une bibliothèque de fonctions prenant en charge l&#39;informatique distribuée, les contextes de calcul à distance et les algorithmes hautes performances.\n\nMicrosoftml\nLa bibliothèque Microsoftml contient des fonctions pour les algorithmes d’apprentissage automatique, notamment la création de modèles linéaires, d’arbres de décision, de régression logistique, de réseaux de neurones et de détection d’anomalies.\n\n\nCommençons\n  Les méthodes d&#39;analyse traditionnelles au sein de SQL Server utilisant divers composants Microsoft tels que SQL, MDX, DAX dans PowerPivot offrent la flexibilité nécessaire pour transformer des données. Désormais, le langage R, un autre riche ensemble de modules d&#39;apprentissage automatique pour l&#39;analyse de données, est directement intégré à SQL Server 2016. R est un autre langage qui possède une base d&#39;utilisateurs importante, avec Python. Avec les modules disponibles en Python, l&#39;analyse des données devient plus efficace.\n\n  Permettez-moi de vous donner quelques exemples pour prouver que l&#39;utilisation de Python dans SQL Server est un moyen efficace d&#39;extraire des données de serveurs distants.\n\n\n\n  Voir comment se connecter à une source de données SQL Server à l&#39;aide de pyodbc\n\n\n  Exécutez la requête SQL, dans ce cas, créez la chaîne de connexion qui pointe vers une instance SQL distante et exécutez la requête Dynamic Management View sys.dm_os_waitstas.\n\n\n  Attribuer la sortie SQL aux trames de données\n\n\n  Afficher les 10 premières lignes du jeu de résultats SQL à l&#39;aide de la fonction head\n  La commande head permet d’afficher les premières «n» lignes du cadre de données. Cela ressemble à la commande supérieure de SQL Server. La première colonne (montrant 0 à 9) est l&#39;index par défaut pour le cadre de données\n\n\n  Afin de convertir les données du cadre de données en colonnes SQL associées, la clause WITH RESULTS SET est définie à la fin du code. Cela nous donne la possibilité de définir la colonne et les types associés de chaque colonne.\n\n\n  WITH RESULT SETS requiert que le nombre de colonnes de la définition de résultat soit égal au nombre de colonnes renvoyées par la procédure stockée / requête SQL. Dans les exemples suivants, la sortie de la requête SQL renvoie quatre colonnes: nom_serveur, type_attente, nombre_attentes_attente, nombre_attendus. Celles-ci correspondent à la définition de la clause with result sets.\n\n\n\n\n\n\n\n\n\n\nEXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas en tant que pd\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = api1401&#39;&#39;)\ncurseur = connexion.curseur ()\nrequête = &#39;&#39;SELECT wait_type, waiting_tasks_count, wait_time_ms FROM sys.dm_os_wait_stats&#39;&#39;\ndf = pd.read_sql (requête, connexion)\nprint (df.head (5))\nconnection.close ()\n&#39;\n\n\n\n\n\n\n  \n\n  La sortie de requête SQL ci-dessus peut également être renvoyée sous forme de table SQL à l&#39;aide de avec clause de résultat.\n\n\n\n\n\n\n\n\n\nEXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas comme pa\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = sqlshackai1401&#39;&#39;)\nrequête = &#39;&#39;SELECT @@ nom_serveur, type_attend, nombre_attentes_attente, nombre_attendus FROM sys.dm_os_wait_stats&#39;&#39;\npa.read_sql (requête, connexion)\nOutputDataSet = pa.read_sql (requête, connexion)\n&#39;\nAVEC RÉSULTAT SETS((nom du serveur varchar(20),waiting_Type varchar(256), waiting_tasks_count bigint, wait_time_ms décimal(20,5)))\n\n\n\n\n\n\n  \n\n  Examinons un exemple pour insérer les exemples de données dans le tableau. L&#39;exemple de requête SQL suivant fournit les informations internes à la base de données, imprimées sous forme de sortie chaîne.\n\n\n\n\n\n\n\n1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n\n\n\n\nEXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;importer pyodbc\nimporter des pandas comme pa\navec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                lines = infile.read (). splitlines ()\npour ligne en ligne:\n        serveur = ligne\n        serveur d&#39;imprimante)\n        database = &quot;Master&quot;\n        cnxn = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + serveur + &quot;; PORT = 1443; DATABASE =&quot; + base de données + &quot;; UID = sa; PWD = api1401&quot;)\n        tsql = &quot;&quot; &quot;\n        SÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName &quot;&quot; &quot;\n        print (pa.read_sql (tsql, cnxn)) &#39;\n\n\n\n\n\n\n  \n\n  Le code SQL suivant crée une table de démonstration sur l&#39;instance cible. SQLShackDemoDB est le nom de la base de données cible.\n\n\n\n\n\n\n\n\n\nUTILISATION [[[[SQLShackDemoDB]\nALLER\nCRÉER TABLE [[[[dbo].[[[[tbl_databaseInventory](\n\t[[[[Nom du serveur] [[[[varchar](100) NE PAS NUL,\n\t[[[[nom de la base de données] [[[[varchar](25) NUL,\n\t[[[[Fichiers de données] [[[[int] NUL,\n\t[[[[DataMB] [[[[int] NUL,\n\t[[[[LogFiles] [[[[int] NUL,\n\t[[[[LogMB] [[[[int] NUL\n) SUR [[[[PRIMAIRE]\nALLER\n\n\n\n\n\n  La procédure stockée nommée P_SampleDBInventory_Python est créé avec deux connexions.\n\n\n\n  Charger le pyodbc Module Python pour la connectivité de données\n\n\n  Construisez la chaîne de connexion cible. Il inclut les détails de l&#39;objet de destination tels que l&#39;instance cible, la base de données et la table.\n\n  Pour la chaîne de connexion cible,\n\n\n  Ouvre le curseur\n\n\n  La deuxième chaîne de connexion est construite à l&#39;aide d&#39;un fichier. Le fichier est la source des noms de serveur d&#39;entrée. La requête doit traverser les listes pour générer les ensembles de données. Ensuite, l&#39;ensemble de données est parcouru pour extraire les détails de la colonne dans la destination à l&#39;aide de la chaîne de connexion cible\n\n\n  Générez l&#39;instruction SQL à l&#39;aide de guillemets triples. Les triples guillemets sont utilisés pour créer des chaînes régulières pouvant s&#39;étendre sur plusieurs lignes.\n\n\n  L&#39;instruction SQL est exécutée à l&#39;aide du curseur défini\n\n\n  Les résultats sont chargés dans la table de destination\n\n\n  Appeler la procédure stockée\n\n\n\n\n\n\n\n\nEXEC P_SampleDBInventory_Python\n\n\n\n\n\n\n\n  Vérifier la sortie SQL\n\n\n\n\n\n\n\n1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n\n\n\n\nCRÉER Procédure P_SampleDBInventory_Python\nCOMME\nEXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;\nimporter pyodbc\nimporter des pandas comme pa\nInstance = &#39;&#39;HQBT01&#39;&#39;\nBase de données = &#39;&#39;SQLShackDemoDB&#39;&#39;\nuname = &#39;&#39;thanVitha2017&#39;&#39;\npwd = &#39;&#39;thanVitha2017401 $&#39;&#39;\nconn1 = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVER =&#39;&#39;+ Instance +&#39;&#39;; PORT = 1443; DATABASE =&#39;&#39;+ Database +&#39;&#39;; UID =&#39;&#39;+ uname +&#39;&#39;; PWD =&#39;&#39;+ pwd)\ncur1 = conn1.cursor ()\n\navec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                Entrée = infile.read (). Splitlines ()\npour l&#39;entrée en entrée:\n        srv = sInput\n        print (srv)\n        db = &quot;master&quot;\n        conn2 = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + srv + &quot;; PORT = 1443; DATABASE =&quot; + db + &quot;; UID = sa; PWD = as21201&quot;)\n        cur2 = conn2.cursor ()\n        SQL1 = &quot;&quot; &quot;\nSÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName; &quot;&quot; &quot;\n        avec cur2.execute (SQL1):\n                rangée = curseur.fetchone ()\n                en rangée:  \n                        print (str (row)[0]) + &quot;&quot; + Str (rangée[1]) + &quot;&quot; + Str (rangée[2]) + &quot;&quot; + Str (rangée[3]) + &quot;&quot; + Str (rangée[4]) + &quot;&quot; + Str (rangée[5]))\n                        SQL2 = &quot;INSERT INTO [tbl_DatabaseInventory] (Nom du serveur, Nom de la base de données, DataFiles, DataMB, LogFiles, LogMB) VALEURS (?,?,?,?,?,?); &quot;\n                        avec cur1.execute (SQL2, str (ligne[0]), str (rangée[1]),rangée[2],rangée[3],rangée[4],rangée[5]):\n                                impression (&#39;&#39;Inséré avec succès!&#39;&#39;)\n                        rangée = curseur.fetchone () &#39;\nFIN\n\n\n\n\n\n  Sortie:\n\n\n  \n\nEmballer\n  Donc là vous l&#39;avez. Bien que les exemples fournis soient assez simples, j&#39;espère que vous pourrez voir à quel point Python pourrait être utile pour un administrateur de base de données également, et pas seulement pour un spécialiste en informatique ou en données.\n\n  La vraie beauté est que tout ce code pourrait s&#39;asseoir dans une procédure stockée; quelque chose que vous ne pouvez pas tout faire aussi bien avec PowerShell.\n\n  L&#39;intégration de Python dans SQL Server 2017 offre aux chercheurs en données un moyen simple d&#39;interagir avec leurs données directement dans le moteur de base de données, ainsi qu&#39;aux développeurs un moyen simple d&#39;intégrer des modèles Python à leur application via de simples procédures stockées.\n\n\n\n\n\n\nPrashanth Jayaram\nJe suis un technologue en bases de données ayant plus de 11 ans d’expérience pratique et riche en technologies de bases de données. Je suis un professionnel certifié Microsoft et je suis titulaire d&#39;un diplôme en maîtrise d&#39;applications informatiques. \nMa spécialité réside dans la conception et la mise en œuvre de solutions de haute disponibilité et de migration multi-plateformes de bases de données. Les technologies actuellement utilisées sont SQL Server, PowerShell, Oracle et MongoDB.\nVoir tous les messages de Prashanth Jayaram\n\n\n\n\n\n\nDerniers articles de Prashanth Jayaram (voir tout)\n\n\n\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Certains de mes articles précédents sur Python donnaient un aperçu des bases et de l&#39;utilisation de Python dans SQL Server 2017.","Cet article vise à rassembler toutes les pièces manquantes et à démontrer l’importance de l’utilisation de la programmation Python dans SQL Server.","Beaucoup disent que PowerShell a l&#39;avantage sur Python dans certains aspects de l&#39;administration de la base de données. Moi aussi, je ressens la même impression que de nombreux passionnés de technique, mais avec une connaissance très limitée, nous pouvons également voir le pouvoir de Python. Peut-être, au lieu de comparer PowerShell et Python, nous pouvons les considérer comme des technologies complémentaires.","En 2016, R, le langage de programmation informatique statistique a été intégré à la version de SQL Server, nommée pour la même année. L’autre côté de la médaille était absent, car Python est également un langage de premier plan pour l’apprentissage automatique et compte même un grand nombre d’utilisateurs. Dans SQL Server 2017, Python est intégré. Maintenant, R et Python sont sous le même parapluie de la fonctionnalité appelée services d&#39;apprentissage automatique.","Comme Python est un langage de programmation commun adopté par les scientifiques de données et les administrateurs de base de données, la possibilité d’exécuter du code Python en tant que script T-SQL permet aux fonctions d’apprentissage automatique de traiter directement de grandes quantités de données. Premièrement, il n&#39;est plus nécessaire d&#39;extraire des données de la base de données avant de pouvoir les traiter via un programme client. Cela nous offre des avantages importants en termes de sécurité, d&#39;intégrité et de conformité, qui surviennent lorsque des données sont par ailleurs déplacées en dehors de l&#39;environnement hautement contrôlé dans le moteur de base de données. De plus, les calculs sont effectués sur le serveur lui-même sans avoir à transférer les données à un client, ce qui impose une charge importante sur le trafic réseau. Cela signifie également que vous pouvez effectuer des calculs sur l&#39;intégralité du jeu de données sans avoir à prélever des échantillons représentatifs, ce qui est courant lors du traitement de données sur une machine distincte. Et comme les données restent en place, vous pouvez tirer pleinement parti des avantages en termes de performances apportés par les technologies SQL Server telles que les tables en mémoire et les index de magasin de colonnes. Le code Python est également très facile à déployer et peut être écrit directement dans une commande Transact-SQL.","Ensuite, SQL Server 2017 prend en charge l&#39;installation de tous les packages Python dont nous pourrions avoir besoin afin que vous puissiez vous appuyer sur la vaste collection de fonctionnalités Open Source développées par la communauté Python plus large. Enfin, l&#39;intégration Python est disponible dans toutes les éditions de SQL Server 2017, y compris l&#39;édition Express gratuite. Ainsi, quelle que soit l&#39;ampleur de votre application, vous pouvez tirer parti de l&#39;intégration Python.","Pour vous aider à démarrer, SQL Server 2017 inclut un certain nombre de bibliothèques d&#39;Anaconda, une plate-forme de science de données très populaire. De plus, Microsoft a créé deux bibliothèques installées avec Machine Learning Services.","Revoscalepy\nRevoscalepy est une bibliothèque de fonctions prenant en charge l&#39;informatique distribuée, les contextes de calcul à distance et les algorithmes hautes performances.","Microsoftml\nLa bibliothèque Microsoftml contient des fonctions pour les algorithmes d’apprentissage automatique, notamment la création de modèles linéaires, d’arbres de décision, de régression logistique, de réseaux de neurones et de détection d’anomalies.","Commençons\n  Les méthodes d&#39;analyse traditionnelles au sein de SQL Server utilisant divers composants Microsoft tels que SQL, MDX, DAX dans PowerPivot offrent la flexibilité nécessaire pour transformer des données. Désormais, le langage R, un autre riche ensemble de modules d&#39;apprentissage automatique pour l&#39;analyse de données, est directement intégré à SQL Server 2016. R est un autre langage qui possède une base d&#39;utilisateurs importante, avec Python. Avec les modules disponibles en Python, l&#39;analyse des données devient plus efficace.","Permettez-moi de vous donner quelques exemples pour prouver que l&#39;utilisation de Python dans SQL Server est un moyen efficace d&#39;extraire des données de serveurs distants.","Voir comment se connecter à une source de données SQL Server à l&#39;aide de pyodbc","Exécutez la requête SQL, dans ce cas, créez la chaîne de connexion qui pointe vers une instance SQL distante et exécutez la requête Dynamic Management View sys.dm_os_waitstas.","Attribuer la sortie SQL aux trames de données","Afficher les 10 premières lignes du jeu de résultats SQL à l&#39;aide de la fonction head\n  La commande head permet d’afficher les premières «n» lignes du cadre de données. Cela ressemble à la commande supérieure de SQL Server. La première colonne (montrant 0 à 9) est l&#39;index par défaut pour le cadre de données","Afin de convertir les données du cadre de données en colonnes SQL associées, la clause WITH RESULTS SET est définie à la fin du code. Cela nous donne la possibilité de définir la colonne et les types associés de chaque colonne.","WITH RESULT SETS requiert que le nombre de colonnes de la définition de résultat soit égal au nombre de colonnes renvoyées par la procédure stockée / requête SQL. Dans les exemples suivants, la sortie de la requête SQL renvoie quatre colonnes: nom_serveur, type_attente, nombre_attentes_attente, nombre_attendus. Celles-ci correspondent à la définition de la clause with result sets.","EXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas en tant que pd\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = api1401&#39;&#39;)\ncurseur = connexion.curseur ()\nrequête = &#39;&#39;SELECT wait_type, waiting_tasks_count, wait_time_ms FROM sys.dm_os_wait_stats&#39;&#39;\ndf = pd.read_sql (requête, connexion)\nprint (df.head (5))\nconnection.close ()\n&#39;","La sortie de requête SQL ci-dessus peut également être renvoyée sous forme de table SQL à l&#39;aide de avec clause de résultat.","EXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas comme pa\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = sqlshackai1401&#39;&#39;)\nrequête = &#39;&#39;SELECT @@ nom_serveur, type_attend, nombre_attentes_attente, nombre_attendus FROM sys.dm_os_wait_stats&#39;&#39;\npa.read_sql (requête, connexion)\nOutputDataSet = pa.read_sql (requête, connexion)\n&#39;\nAVEC RÉSULTAT SETS((nom du serveur varchar(20),waiting_Type varchar(256), waiting_tasks_count bigint, wait_time_ms décimal(20,5)))","Examinons un exemple pour insérer les exemples de données dans le tableau. L&#39;exemple de requête SQL suivant fournit les informations internes à la base de données, imprimées sous forme de sortie chaîne.","1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22","EXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;importer pyodbc\nimporter des pandas comme pa\navec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                lines = infile.read (). splitlines ()\npour ligne en ligne:\n        serveur = ligne\n        serveur d&#39;imprimante)\n        database = &quot;Master&quot;\n        cnxn = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + serveur + &quot;; PORT = 1443; DATABASE =&quot; + base de données + &quot;; UID = sa; PWD = api1401&quot;)\n        tsql = &quot;&quot; &quot;\n        SÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName &quot;&quot; &quot;\n        print (pa.read_sql (tsql, cnxn)) &#39;","Le code SQL suivant crée une table de démonstration sur l&#39;instance cible. SQLShackDemoDB est le nom de la base de données cible.","UTILISATION [[[[SQLShackDemoDB]\nALLER\nCRÉER TABLE [[[[dbo].[[[[tbl_databaseInventory](\n\t[[[[Nom du serveur] [[[[varchar](100) NE PAS NUL,\n\t[[[[nom de la base de données] [[[[varchar](25) NUL,\n\t[[[[Fichiers de données] [[[[int] NUL,\n\t[[[[DataMB] [[[[int] NUL,\n\t[[[[LogFiles] [[[[int] NUL,\n\t[[[[LogMB] [[[[int] NUL\n) SUR [[[[PRIMAIRE]\nALLER","La procédure stockée nommée P_SampleDBInventory_Python est créé avec deux connexions.","Charger le pyodbc Module Python pour la connectivité de données","Construisez la chaîne de connexion cible. Il inclut les détails de l&#39;objet de destination tels que l&#39;instance cible, la base de données et la table.","Pour la chaîne de connexion cible,","Ouvre le curseur","La deuxième chaîne de connexion est construite à l&#39;aide d&#39;un fichier. Le fichier est la source des noms de serveur d&#39;entrée. La requête doit traverser les listes pour générer les ensembles de données. Ensuite, l&#39;ensemble de données est parcouru pour extraire les détails de la colonne dans la destination à l&#39;aide de la chaîne de connexion cible","Générez l&#39;instruction SQL à l&#39;aide de guillemets triples. Les triples guillemets sont utilisés pour créer des chaînes régulières pouvant s&#39;étendre sur plusieurs lignes.","L&#39;instruction SQL est exécutée à l&#39;aide du curseur défini","Les résultats sont chargés dans la table de destination","Appeler la procédure stockée","EXEC P_SampleDBInventory_Python","Vérifier la sortie SQL","1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41","CRÉER Procédure P_SampleDBInventory_Python\nCOMME\nEXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;\nimporter pyodbc\nimporter des pandas comme pa\nInstance = &#39;&#39;HQBT01&#39;&#39;\nBase de données = &#39;&#39;SQLShackDemoDB&#39;&#39;\nuname = &#39;&#39;thanVitha2017&#39;&#39;\npwd = &#39;&#39;thanVitha2017401 $&#39;&#39;\nconn1 = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVER =&#39;&#39;+ Instance +&#39;&#39;; PORT = 1443; DATABASE =&#39;&#39;+ Database +&#39;&#39;; UID =&#39;&#39;+ uname +&#39;&#39;; PWD =&#39;&#39;+ pwd)\ncur1 = conn1.cursor ()","avec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                Entrée = infile.read (). Splitlines ()\npour l&#39;entrée en entrée:\n        srv = sInput\n        print (srv)\n        db = &quot;master&quot;\n        conn2 = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + srv + &quot;; PORT = 1443; DATABASE =&quot; + db + &quot;; UID = sa; PWD = as21201&quot;)\n        cur2 = conn2.cursor ()\n        SQL1 = &quot;&quot; &quot;\nSÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName; &quot;&quot; &quot;\n        avec cur2.execute (SQL1):\n                rangée = curseur.fetchone ()\n                en rangée:  \n                        print (str (row)[0]) + &quot;&quot; + Str (rangée[1]) + &quot;&quot; + Str (rangée[2]) + &quot;&quot; + Str (rangée[3]) + &quot;&quot; + Str (rangée[4]) + &quot;&quot; + Str (rangée[5]))\n                        SQL2 = &quot;INSERT INTO [tbl_DatabaseInventory] (Nom du serveur, Nom de la base de données, DataFiles, DataMB, LogFiles, LogMB) VALEURS (?,?,?,?,?,?); &quot;\n                        avec cur1.execute (SQL2, str (ligne[0]), str (rangée[1]),rangée[2],rangée[3],rangée[4],rangée[5]):\n                                impression (&#39;&#39;Inséré avec succès!&#39;&#39;)\n                        rangée = curseur.fetchone () &#39;\nFIN","Sortie:","Emballer\n  Donc là vous l&#39;avez. Bien que les exemples fournis soient assez simples, j&#39;espère que vous pourrez voir à quel point Python pourrait être utile pour un administrateur de base de données également, et pas seulement pour un spécialiste en informatique ou en données.","La vraie beauté est que tout ce code pourrait s&#39;asseoir dans une procédure stockée; quelque chose que vous ne pouvez pas tout faire aussi bien avec PowerShell.","L&#39;intégration de Python dans SQL Server 2017 offre aux chercheurs en données un moyen simple d&#39;interagir avec leurs données directement dans le moteur de base de données, ainsi qu&#39;aux développeurs un moyen simple d&#39;intégrer des modèles Python à leur application via de simples procédures stockées.","Prashanth Jayaram\nJe suis un technologue en bases de données ayant plus de 11 ans d’expérience pratique et riche en technologies de bases de données. Je suis un professionnel certifié Microsoft et je suis titulaire d&#39;un diplôme en maîtrise d&#39;applications informatiques. \nMa spécialité réside dans la conception et la mise en œuvre de solutions de haute disponibilité et de migration multi-plateformes de bases de données. Les technologies actuellement utilisées sont SQL Server, PowerShell, Oracle et MongoDB.\nVoir tous les messages de Prashanth Jayaram","Derniers articles de Prashanth Jayaram (voir tout)","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Certains de mes articles précédents sur Python donnaient un aperçu des bases et de l&#39;utilisation de Python dans SQL Server 2017.","html":"<p>Certains de mes articles précédents sur Python donnaient un aperçu des bases et de l&#039;utilisation de Python dans SQL Server 2017.</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"Cet article vise à rassembler toutes les pièces manquantes et à démontrer l’importance de l’utilisation de la programmation Python dans SQL Server.","html":"<p>Cet article vise à rassembler toutes les pièces manquantes et à démontrer l’importance de l’utilisation de la programmation Python dans SQL Server.</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Beaucoup disent que PowerShell a l&#39;avantage sur Python dans certains aspects de l&#39;administration de la base de données. Moi aussi, je ressens la même impression que de nombreux passionnés de technique, mais avec une connaissance très limitée, nous pouvons également voir le pouvoir de Python. Peut-être, au lieu de comparer PowerShell et Python, nous pouvons les considérer comme des technologies complémentaires.","html":"<p>Beaucoup disent que PowerShell a l&#039;avantage sur Python dans certains aspects de l&#039;administration de la base de données. Moi aussi, je ressens la même impression que de nombreux passionnés de technique, mais avec une connaissance très limitée, nous pouvons également voir le pouvoir de Python. Peut-être, au lieu de comparer PowerShell et Python, nous pouvons les considérer comme des technologies complémentaires.</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"En 2016, R, le langage de programmation informatique statistique a été intégré à la version de SQL Server, nommée pour la même année. L’autre côté de la médaille était absent, car Python est également un langage de premier plan pour l’apprentissage automatique et compte même un grand nombre d’utilisateurs. Dans SQL Server 2017, Python est intégré. Maintenant, R et Python sont sous le même parapluie de la fonctionnalité appelée services d&#39;apprentissage automatique.","html":"<p>En 2016, R, le langage de programmation informatique statistique a été intégré à la version de SQL Server, nommée pour la même année. L’autre côté de la médaille était absent, car Python est également un langage de premier plan pour l’apprentissage automatique et compte même un grand nombre d’utilisateurs. Dans SQL Server 2017, Python est intégré. Maintenant, R et Python sont sous le même parapluie de la fonctionnalité appelée services d&#039;apprentissage automatique.</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Comme Python est un langage de programmation commun adopté par les scientifiques de données et les administrateurs de base de données, la possibilité d’exécuter du code Python en tant que script T-SQL permet aux fonctions d’apprentissage automatique de traiter directement de grandes quantités de données. Premièrement, il n&#39;est plus nécessaire d&#39;extraire des données de la base de données avant de pouvoir les traiter via un programme client. Cela nous offre des avantages importants en termes de sécurité, d&#39;intégrité et de conformité, qui surviennent lorsque des données sont par ailleurs déplacées en dehors de l&#39;environnement hautement contrôlé dans le moteur de base de données. De plus, les calculs sont effectués sur le serveur lui-même sans avoir à transférer les données à un client, ce qui impose une charge importante sur le trafic réseau. Cela signifie également que vous pouvez effectuer des calculs sur l&#39;intégralité du jeu de données sans avoir à prélever des échantillons représentatifs, ce qui est courant lors du traitement de données sur une machine distincte. Et comme les données restent en place, vous pouvez tirer pleinement parti des avantages en termes de performances apportés par les technologies SQL Server telles que les tables en mémoire et les index de magasin de colonnes. Le code Python est également très facile à déployer et peut être écrit directement dans une commande Transact-SQL.","html":"<p>Comme Python est un langage de programmation commun adopté par les scientifiques de données et les administrateurs de base de données, la possibilité d’exécuter du code Python en tant que script T-SQL permet aux fonctions d’apprentissage automatique de traiter directement de grandes quantités de données. Premièrement, il n&#039;est plus nécessaire d&#039;extraire des données de la base de données avant de pouvoir les traiter via un programme client. Cela nous offre des avantages importants en termes de sécurité, d&#039;intégrité et de conformité, qui surviennent lorsque des données sont par ailleurs déplacées en dehors de l&#039;environnement hautement contrôlé dans le moteur de base de données. De plus, les calculs sont effectués sur le serveur lui-même sans avoir à transférer les données à un client, ce qui impose une charge importante sur le trafic réseau. Cela signifie également que vous pouvez effectuer des calculs sur l&#039;intégralité du jeu de données sans avoir à prélever des échantillons représentatifs, ce qui est courant lors du traitement de données sur une machine distincte. Et comme les données restent en place, vous pouvez tirer pleinement parti des avantages en termes de performances apportés par les technologies SQL Server telles que les tables en mémoire et les index de magasin de colonnes. Le code Python est également très facile à déployer et peut être écrit directement dans une commande Transact-SQL.</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"Ensuite, SQL Server 2017 prend en charge l&#39;installation de tous les packages Python dont nous pourrions avoir besoin afin que vous puissiez vous appuyer sur la vaste collection de fonctionnalités Open Source développées par la communauté Python plus large. Enfin, l&#39;intégration Python est disponible dans toutes les éditions de SQL Server 2017, y compris l&#39;édition Express gratuite. Ainsi, quelle que soit l&#39;ampleur de votre application, vous pouvez tirer parti de l&#39;intégration Python.","html":"<p>Ensuite, SQL Server 2017 prend en charge l&#039;installation de tous les packages Python dont nous pourrions avoir besoin afin que vous puissiez vous appuyer sur la vaste collection de fonctionnalités Open Source développées par la communauté Python plus large. Enfin, l&#039;intégration Python est disponible dans toutes les éditions de SQL Server 2017, y compris l&#039;édition Express gratuite. Ainsi, quelle que soit l&#039;ampleur de votre application, vous pouvez tirer parti de l&#039;intégration Python.</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"Pour vous aider à démarrer, SQL Server 2017 inclut un certain nombre de bibliothèques d&#39;Anaconda, une plate-forme de science de données très populaire. De plus, Microsoft a créé deux bibliothèques installées avec Machine Learning Services.","html":"<p>Pour vous aider à démarrer, SQL Server 2017 inclut un certain nombre de bibliothèques d&#039;Anaconda, une plate-forme de science de données très populaire. De plus, Microsoft a créé deux bibliothèques installées avec Machine Learning Services.</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"Revoscalepy\nRevoscalepy est une bibliothèque de fonctions prenant en charge l&#39;informatique distribuée, les contextes de calcul à distance et les algorithmes hautes performances.","html":"<p>Revoscalepy\nRevoscalepy est une bibliothèque de fonctions prenant en charge l&#039;informatique distribuée, les contextes de calcul à distance et les algorithmes hautes performances.</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"Microsoftml\nLa bibliothèque Microsoftml contient des fonctions pour les algorithmes d’apprentissage automatique, notamment la création de modèles linéaires, d’arbres de décision, de régression logistique, de réseaux de neurones et de détection d’anomalies.","html":"<p>Microsoftml\nLa bibliothèque Microsoftml contient des fonctions pour les algorithmes d’apprentissage automatique, notamment la création de modèles linéaires, d’arbres de décision, de régression logistique, de réseaux de neurones et de détection d’anomalies.</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"Commençons\n  Les méthodes d&#39;analyse traditionnelles au sein de SQL Server utilisant divers composants Microsoft tels que SQL, MDX, DAX dans PowerPivot offrent la flexibilité nécessaire pour transformer des données. Désormais, le langage R, un autre riche ensemble de modules d&#39;apprentissage automatique pour l&#39;analyse de données, est directement intégré à SQL Server 2016. R est un autre langage qui possède une base d&#39;utilisateurs importante, avec Python. Avec les modules disponibles en Python, l&#39;analyse des données devient plus efficace.","html":"<p>Commençons\n  Les méthodes d&#039;analyse traditionnelles au sein de SQL Server utilisant divers composants Microsoft tels que SQL, MDX, DAX dans PowerPivot offrent la flexibilité nécessaire pour transformer des données. Désormais, le langage R, un autre riche ensemble de modules d&#039;apprentissage automatique pour l&#039;analyse de données, est directement intégré à SQL Server 2016. R est un autre langage qui possède une base d&#039;utilisateurs importante, avec Python. Avec les modules disponibles en Python, l&#039;analyse des données devient plus efficace.</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"Permettez-moi de vous donner quelques exemples pour prouver que l&#39;utilisation de Python dans SQL Server est un moyen efficace d&#39;extraire des données de serveurs distants.","html":"<p>Permettez-moi de vous donner quelques exemples pour prouver que l&#039;utilisation de Python dans SQL Server est un moyen efficace d&#039;extraire des données de serveurs distants.</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"Voir comment se connecter à une source de données SQL Server à l&#39;aide de pyodbc","html":"<p>Voir comment se connecter à une source de données SQL Server à l&#039;aide de pyodbc</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"Exécutez la requête SQL, dans ce cas, créez la chaîne de connexion qui pointe vers une instance SQL distante et exécutez la requête Dynamic Management View sys.dm_os_waitstas.","html":"<p>Exécutez la requête SQL, dans ce cas, créez la chaîne de connexion qui pointe vers une instance SQL distante et exécutez la requête Dynamic Management View sys.dm_os_waitstas.</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"Attribuer la sortie SQL aux trames de données","html":"<p>Attribuer la sortie SQL aux trames de données</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"Afficher les 10 premières lignes du jeu de résultats SQL à l&#39;aide de la fonction head\n  La commande head permet d’afficher les premières «n» lignes du cadre de données. Cela ressemble à la commande supérieure de SQL Server. La première colonne (montrant 0 à 9) est l&#39;index par défaut pour le cadre de données","html":"<p>Afficher les 10 premières lignes du jeu de résultats SQL à l&#039;aide de la fonction head\n  La commande head permet d’afficher les premières «n» lignes du cadre de données. Cela ressemble à la commande supérieure de SQL Server. La première colonne (montrant 0 à 9) est l&#039;index par défaut pour le cadre de données</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"Afin de convertir les données du cadre de données en colonnes SQL associées, la clause WITH RESULTS SET est définie à la fin du code. Cela nous donne la possibilité de définir la colonne et les types associés de chaque colonne.","html":"<p>Afin de convertir les données du cadre de données en colonnes SQL associées, la clause WITH RESULTS SET est définie à la fin du code. Cela nous donne la possibilité de définir la colonne et les types associés de chaque colonne.</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"WITH RESULT SETS requiert que le nombre de colonnes de la définition de résultat soit égal au nombre de colonnes renvoyées par la procédure stockée / requête SQL. Dans les exemples suivants, la sortie de la requête SQL renvoie quatre colonnes: nom_serveur, type_attente, nombre_attentes_attente, nombre_attendus. Celles-ci correspondent à la définition de la clause with result sets.","html":"<p>WITH RESULT SETS requiert que le nombre de colonnes de la définition de résultat soit égal au nombre de colonnes renvoyées par la procédure stockée / requête SQL. Dans les exemples suivants, la sortie de la requête SQL renvoie quatre colonnes: nom_serveur, type_attente, nombre_attentes_attente, nombre_attendus. Celles-ci correspondent à la définition de la clause with result sets.</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"EXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas en tant que pd\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = api1401&#39;&#39;)\ncurseur = connexion.curseur ()\nrequête = &#39;&#39;SELECT wait_type, waiting_tasks_count, wait_time_ms FROM sys.dm_os_wait_stats&#39;&#39;\ndf = pd.read_sql (requête, connexion)\nprint (df.head (5))\nconnection.close ()\n&#39;","html":"<p>EXEC sp_execute_external_script\n@la langue = N&#039;python&#039;,\n@scénario =\nN&#039;importer pyodbc\nimporter des pandas en tant que pd\nconnexion = pyodbc.connect (&#039;&#039;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = api1401&#039;&#039;)\ncurseur = connexion.curseur ()\nrequête = &#039;&#039;SELECT wait_type, waiting_tasks_count, wait_time_ms FROM sys.dm_os_wait_stats&#039;&#039;\ndf = pd.read_sql (requête, connexion)\nprint (df.head (5))\nconnection.close ()\n&#039;</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"La sortie de requête SQL ci-dessus peut également être renvoyée sous forme de table SQL à l&#39;aide de avec clause de résultat.","html":"<p>La sortie de requête SQL ci-dessus peut également être renvoyée sous forme de table SQL à l&#039;aide de avec clause de résultat.</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"EXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas comme pa\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = sqlshackai1401&#39;&#39;)\nrequête = &#39;&#39;SELECT @@ nom_serveur, type_attend, nombre_attentes_attente, nombre_attendus FROM sys.dm_os_wait_stats&#39;&#39;\npa.read_sql (requête, connexion)\nOutputDataSet = pa.read_sql (requête, connexion)\n&#39;\nAVEC RÉSULTAT SETS((nom du serveur varchar(20),waiting_Type varchar(256), waiting_tasks_count bigint, wait_time_ms décimal(20,5)))","html":"<p>EXEC sp_execute_external_script\n@la langue = N&#039;python&#039;,\n@scénario =\nN&#039;importer pyodbc\nimporter des pandas comme pa\nconnexion = pyodbc.connect (&#039;&#039;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = sqlshackai1401&#039;&#039;)\nrequête = &#039;&#039;SELECT @@ nom_serveur, type_attend, nombre_attentes_attente, nombre_attendus FROM sys.dm_os_wait_stats&#039;&#039;\npa.read_sql (requête, connexion)\nOutputDataSet = pa.read_sql (requête, connexion)\n&#039;\nAVEC RÉSULTAT SETS((nom du serveur varchar(20),waiting_Type varchar(256), waiting_tasks_count bigint, wait_time_ms décimal(20,5)))</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"Examinons un exemple pour insérer les exemples de données dans le tableau. L&#39;exemple de requête SQL suivant fournit les informations internes à la base de données, imprimées sous forme de sortie chaîne.","html":"<p>Examinons un exemple pour insérer les exemples de données dans le tableau. L&#039;exemple de requête SQL suivant fournit les informations internes à la base de données, imprimées sous forme de sortie chaîne.</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22","html":"<p>1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"EXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;importer pyodbc\nimporter des pandas comme pa\navec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                lines = infile.read (). splitlines ()\npour ligne en ligne:\n        serveur = ligne\n        serveur d&#39;imprimante)\n        database = &quot;Master&quot;\n        cnxn = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + serveur + &quot;; PORT = 1443; DATABASE =&quot; + base de données + &quot;; UID = sa; PWD = api1401&quot;)\n        tsql = &quot;&quot; &quot;\n        SÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName &quot;&quot; &quot;\n        print (pa.read_sql (tsql, cnxn)) &#39;","html":"<p>EXEC sp_execute_external_script\n@la langue = N&#039;Python&#039;  \n, @scénario = N&#039;importer pyodbc\nimporter des pandas comme pa\navec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                lines = infile.read (). splitlines ()\npour ligne en ligne:\n        serveur = ligne\n        serveur d&#039;imprimante)\n        database = &quot;Master&quot;\n        cnxn = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + serveur + &quot;; PORT = 1443; DATABASE =&quot; + base de données + &quot;; UID = sa; PWD = api1401&quot;)\n        tsql = &quot;&quot; &quot;\n        SÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName &quot;&quot; &quot;\n        print (pa.read_sql (tsql, cnxn)) &#039;</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"Le code SQL suivant crée une table de démonstration sur l&#39;instance cible. SQLShackDemoDB est le nom de la base de données cible.","html":"<p>Le code SQL suivant crée une table de démonstration sur l&#039;instance cible. SQLShackDemoDB est le nom de la base de données cible.</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"UTILISATION [[[[SQLShackDemoDB]\nALLER\nCRÉER TABLE [[[[dbo].[[[[tbl_databaseInventory](\n\t[[[[Nom du serveur] [[[[varchar](100) NE PAS NUL,\n\t[[[[nom de la base de données] [[[[varchar](25) NUL,\n\t[[[[Fichiers de données] [[[[int] NUL,\n\t[[[[DataMB] [[[[int] NUL,\n\t[[[[LogFiles] [[[[int] NUL,\n\t[[[[LogMB] [[[[int] NUL\n) SUR [[[[PRIMAIRE]\nALLER","html":"<p>UTILISATION [[[[SQLShackDemoDB]\nALLER\nCRÉER TABLE [[[[dbo].[[[[tbl_databaseInventory](\n\t[[[[Nom du serveur] [[[[varchar](100) NE PAS NUL,\n\t[[[[nom de la base de données] [[[[varchar](25) NUL,\n\t[[[[Fichiers de données] [[[[int] NUL,\n\t[[[[DataMB] [[[[int] NUL,\n\t[[[[LogFiles] [[[[int] NUL,\n\t[[[[LogMB] [[[[int] NUL\n) SUR [[[[PRIMAIRE]\nALLER</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"La procédure stockée nommée P_SampleDBInventory_Python est créé avec deux connexions.","html":"<p>La procédure stockée nommée P_SampleDBInventory_Python est créé avec deux connexions.</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"Charger le pyodbc Module Python pour la connectivité de données","html":"<p>Charger le pyodbc Module Python pour la connectivité de données</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"Construisez la chaîne de connexion cible. Il inclut les détails de l&#39;objet de destination tels que l&#39;instance cible, la base de données et la table.","html":"<p>Construisez la chaîne de connexion cible. Il inclut les détails de l&#039;objet de destination tels que l&#039;instance cible, la base de données et la table.</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"Pour la chaîne de connexion cible,","html":"<p>Pour la chaîne de connexion cible,</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"Ouvre le curseur","html":"<p>Ouvre le curseur</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"La deuxième chaîne de connexion est construite à l&#39;aide d&#39;un fichier. Le fichier est la source des noms de serveur d&#39;entrée. La requête doit traverser les listes pour générer les ensembles de données. Ensuite, l&#39;ensemble de données est parcouru pour extraire les détails de la colonne dans la destination à l&#39;aide de la chaîne de connexion cible","html":"<p>La deuxième chaîne de connexion est construite à l&#039;aide d&#039;un fichier. Le fichier est la source des noms de serveur d&#039;entrée. La requête doit traverser les listes pour générer les ensembles de données. Ensuite, l&#039;ensemble de données est parcouru pour extraire les détails de la colonne dans la destination à l&#039;aide de la chaîne de connexion cible</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"Générez l&#39;instruction SQL à l&#39;aide de guillemets triples. Les triples guillemets sont utilisés pour créer des chaînes régulières pouvant s&#39;étendre sur plusieurs lignes.","html":"<p>Générez l&#039;instruction SQL à l&#039;aide de guillemets triples. Les triples guillemets sont utilisés pour créer des chaînes régulières pouvant s&#039;étendre sur plusieurs lignes.</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"L&#39;instruction SQL est exécutée à l&#39;aide du curseur défini","html":"<p>L&#039;instruction SQL est exécutée à l&#039;aide du curseur défini</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"Les résultats sont chargés dans la table de destination","html":"<p>Les résultats sont chargés dans la table de destination</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"Appeler la procédure stockée","html":"<p>Appeler la procédure stockée</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"EXEC P_SampleDBInventory_Python","html":"<p>EXEC P_SampleDBInventory_Python</p>"},{"id":"text-37","type":"text","heading":"","plain_text":"Vérifier la sortie SQL","html":"<p>Vérifier la sortie SQL</p>"},{"id":"text-38","type":"text","heading":"","plain_text":"1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41","html":"<p>1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41</p>"},{"id":"text-39","type":"text","heading":"","plain_text":"CRÉER Procédure P_SampleDBInventory_Python\nCOMME\nEXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;\nimporter pyodbc\nimporter des pandas comme pa\nInstance = &#39;&#39;HQBT01&#39;&#39;\nBase de données = &#39;&#39;SQLShackDemoDB&#39;&#39;\nuname = &#39;&#39;thanVitha2017&#39;&#39;\npwd = &#39;&#39;thanVitha2017401 $&#39;&#39;\nconn1 = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVER =&#39;&#39;+ Instance +&#39;&#39;; PORT = 1443; DATABASE =&#39;&#39;+ Database +&#39;&#39;; UID =&#39;&#39;+ uname +&#39;&#39;; PWD =&#39;&#39;+ pwd)\ncur1 = conn1.cursor ()","html":"<p>CRÉER Procédure P_SampleDBInventory_Python\nCOMME\nEXEC sp_execute_external_script\n@la langue = N&#039;Python&#039;  \n, @scénario = N&#039;\nimporter pyodbc\nimporter des pandas comme pa\nInstance = &#039;&#039;HQBT01&#039;&#039;\nBase de données = &#039;&#039;SQLShackDemoDB&#039;&#039;\nuname = &#039;&#039;thanVitha2017&#039;&#039;\npwd = &#039;&#039;thanVitha2017401 $&#039;&#039;\nconn1 = pyodbc.connect (&#039;&#039;DRIVER = Pilote ODBC 13 pour SQL Server; SERVER =&#039;&#039;+ Instance +&#039;&#039;; PORT = 1443; DATABASE =&#039;&#039;+ Database +&#039;&#039;; UID =&#039;&#039;+ uname +&#039;&#039;; PWD =&#039;&#039;+ pwd)\ncur1 = conn1.cursor ()</p>"},{"id":"text-40","type":"text","heading":"","plain_text":"avec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                Entrée = infile.read (). Splitlines ()\npour l&#39;entrée en entrée:\n        srv = sInput\n        print (srv)\n        db = &quot;master&quot;\n        conn2 = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + srv + &quot;; PORT = 1443; DATABASE =&quot; + db + &quot;; UID = sa; PWD = as21201&quot;)\n        cur2 = conn2.cursor ()\n        SQL1 = &quot;&quot; &quot;\nSÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName; &quot;&quot; &quot;\n        avec cur2.execute (SQL1):\n                rangée = curseur.fetchone ()\n                en rangée:  \n                        print (str (row)[0]) + &quot;&quot; + Str (rangée[1]) + &quot;&quot; + Str (rangée[2]) + &quot;&quot; + Str (rangée[3]) + &quot;&quot; + Str (rangée[4]) + &quot;&quot; + Str (rangée[5]))\n                        SQL2 = &quot;INSERT INTO [tbl_DatabaseInventory] (Nom du serveur, Nom de la base de données, DataFiles, DataMB, LogFiles, LogMB) VALEURS (?,?,?,?,?,?); &quot;\n                        avec cur1.execute (SQL2, str (ligne[0]), str (rangée[1]),rangée[2],rangée[3],rangée[4],rangée[5]):\n                                impression (&#39;&#39;Inséré avec succès!&#39;&#39;)\n                        rangée = curseur.fetchone () &#39;\nFIN","html":"<p>avec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                Entrée = infile.read (). Splitlines ()\npour l&#039;entrée en entrée:\n        srv = sInput\n        print (srv)\n        db = &quot;master&quot;\n        conn2 = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + srv + &quot;; PORT = 1443; DATABASE =&quot; + db + &quot;; UID = sa; PWD = as21201&quot;)\n        cur2 = conn2.cursor ()\n        SQL1 = &quot;&quot; &quot;\nSÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName; &quot;&quot; &quot;\n        avec cur2.execute (SQL1):\n                rangée = curseur.fetchone ()\n                en rangée:  \n                        print (str (row)[0]) + &quot;&quot; + Str (rangée[1]) + &quot;&quot; + Str (rangée[2]) + &quot;&quot; + Str (rangée[3]) + &quot;&quot; + Str (rangée[4]) + &quot;&quot; + Str (rangée[5]))\n                        SQL2 = &quot;INSERT INTO [tbl_DatabaseInventory] (Nom du serveur, Nom de la base de données, DataFiles, DataMB, LogFiles, LogMB) VALEURS (?,?,?,?,?,?); &quot;\n                        avec cur1.execute (SQL2, str (ligne[0]), str (rangée[1]),rangée[2],rangée[3],rangée[4],rangée[5]):\n                                impression (&#039;&#039;Inséré avec succès!&#039;&#039;)\n                        rangée = curseur.fetchone () &#039;\nFIN</p>"},{"id":"text-41","type":"text","heading":"","plain_text":"Sortie:","html":"<p>Sortie:</p>"},{"id":"text-42","type":"text","heading":"","plain_text":"Emballer\n  Donc là vous l&#39;avez. Bien que les exemples fournis soient assez simples, j&#39;espère que vous pourrez voir à quel point Python pourrait être utile pour un administrateur de base de données également, et pas seulement pour un spécialiste en informatique ou en données.","html":"<p>Emballer\n  Donc là vous l&#039;avez. Bien que les exemples fournis soient assez simples, j&#039;espère que vous pourrez voir à quel point Python pourrait être utile pour un administrateur de base de données également, et pas seulement pour un spécialiste en informatique ou en données.</p>"},{"id":"text-43","type":"text","heading":"","plain_text":"La vraie beauté est que tout ce code pourrait s&#39;asseoir dans une procédure stockée; quelque chose que vous ne pouvez pas tout faire aussi bien avec PowerShell.","html":"<p>La vraie beauté est que tout ce code pourrait s&#039;asseoir dans une procédure stockée; quelque chose que vous ne pouvez pas tout faire aussi bien avec PowerShell.</p>"},{"id":"text-44","type":"text","heading":"","plain_text":"L&#39;intégration de Python dans SQL Server 2017 offre aux chercheurs en données un moyen simple d&#39;interagir avec leurs données directement dans le moteur de base de données, ainsi qu&#39;aux développeurs un moyen simple d&#39;intégrer des modèles Python à leur application via de simples procédures stockées.","html":"<p>L&#039;intégration de Python dans SQL Server 2017 offre aux chercheurs en données un moyen simple d&#039;interagir avec leurs données directement dans le moteur de base de données, ainsi qu&#039;aux développeurs un moyen simple d&#039;intégrer des modèles Python à leur application via de simples procédures stockées.</p>"},{"id":"text-45","type":"text","heading":"","plain_text":"Prashanth Jayaram\nJe suis un technologue en bases de données ayant plus de 11 ans d’expérience pratique et riche en technologies de bases de données. Je suis un professionnel certifié Microsoft et je suis titulaire d&#39;un diplôme en maîtrise d&#39;applications informatiques. \nMa spécialité réside dans la conception et la mise en œuvre de solutions de haute disponibilité et de migration multi-plateformes de bases de données. Les technologies actuellement utilisées sont SQL Server, PowerShell, Oracle et MongoDB.\nVoir tous les messages de Prashanth Jayaram","html":"<p>Prashanth Jayaram\nJe suis un technologue en bases de données ayant plus de 11 ans d’expérience pratique et riche en technologies de bases de données. Je suis un professionnel certifié Microsoft et je suis titulaire d&#039;un diplôme en maîtrise d&#039;applications informatiques. \nMa spécialité réside dans la conception et la mise en œuvre de solutions de haute disponibilité et de migration multi-plateformes de bases de données. Les technologies actuellement utilisées sont SQL Server, PowerShell, Oracle et MongoDB.\nVoir tous les messages de Prashanth Jayaram</p>"},{"id":"text-46","type":"text","heading":"","plain_text":"Derniers articles de Prashanth Jayaram (voir tout)","html":"<p>Derniers articles de Prashanth Jayaram (voir tout)</p>"},{"id":"text-47","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Certains de mes articles précédents sur Python donnaient un aperçu des bases et de l&#39;utilisation de Python dans SQL Server 2017."},{"id":"text-2","heading":"Text","content":"Cet article vise à rassembler toutes les pièces manquantes et à démontrer l’importance de l’utilisation de la programmation Python dans SQL Server."},{"id":"text-3","heading":"Text","content":"Beaucoup disent que PowerShell a l&#39;avantage sur Python dans certains aspects de l&#39;administration de la base de données. Moi aussi, je ressens la même impression que de nombreux passionnés de technique, mais avec une connaissance très limitée, nous pouvons également voir le pouvoir de Python. Peut-être, au lieu de comparer PowerShell et Python, nous pouvons les considérer comme des technologies complémentaires."},{"id":"text-4","heading":"Text","content":"En 2016, R, le langage de programmation informatique statistique a été intégré à la version de SQL Server, nommée pour la même année. L’autre côté de la médaille était absent, car Python est également un langage de premier plan pour l’apprentissage automatique et compte même un grand nombre d’utilisateurs. Dans SQL Server 2017, Python est intégré. Maintenant, R et Python sont sous le même parapluie de la fonctionnalité appelée services d&#39;apprentissage automatique."},{"id":"text-5","heading":"Text","content":"Comme Python est un langage de programmation commun adopté par les scientifiques de données et les administrateurs de base de données, la possibilité d’exécuter du code Python en tant que script T-SQL permet aux fonctions d’apprentissage automatique de traiter directement de grandes quantités de données. Premièrement, il n&#39;est plus nécessaire d&#39;extraire des données de la base de données avant de pouvoir les traiter via un programme client. Cela nous offre des avantages importants en termes de sécurité, d&#39;intégrité et de conformité, qui surviennent lorsque des données sont par ailleurs déplacées en dehors de l&#39;environnement hautement contrôlé dans le moteur de base de données. De plus, les calculs sont effectués sur le serveur lui-même sans avoir à transférer les données à un client, ce qui impose une charge importante sur le trafic réseau. Cela signifie également que vous pouvez effectuer des calculs sur l&#39;intégralité du jeu de données sans avoir à prélever des échantillons représentatifs, ce qui est courant lors du traitement de données sur une machine distincte. Et comme les données restent en place, vous pouvez tirer pleinement parti des avantages en termes de performances apportés par les technologies SQL Server telles que les tables en mémoire et les index de magasin de colonnes. Le code Python est également très facile à déployer et peut être écrit directement dans une commande Transact-SQL."},{"id":"text-6","heading":"Text","content":"Ensuite, SQL Server 2017 prend en charge l&#39;installation de tous les packages Python dont nous pourrions avoir besoin afin que vous puissiez vous appuyer sur la vaste collection de fonctionnalités Open Source développées par la communauté Python plus large. Enfin, l&#39;intégration Python est disponible dans toutes les éditions de SQL Server 2017, y compris l&#39;édition Express gratuite. Ainsi, quelle que soit l&#39;ampleur de votre application, vous pouvez tirer parti de l&#39;intégration Python."},{"id":"text-7","heading":"Text","content":"Pour vous aider à démarrer, SQL Server 2017 inclut un certain nombre de bibliothèques d&#39;Anaconda, une plate-forme de science de données très populaire. De plus, Microsoft a créé deux bibliothèques installées avec Machine Learning Services."},{"id":"text-8","heading":"Text","content":"Revoscalepy\nRevoscalepy est une bibliothèque de fonctions prenant en charge l&#39;informatique distribuée, les contextes de calcul à distance et les algorithmes hautes performances."},{"id":"text-9","heading":"Text","content":"Microsoftml\nLa bibliothèque Microsoftml contient des fonctions pour les algorithmes d’apprentissage automatique, notamment la création de modèles linéaires, d’arbres de décision, de régression logistique, de réseaux de neurones et de détection d’anomalies."},{"id":"text-10","heading":"Text","content":"Commençons\n  Les méthodes d&#39;analyse traditionnelles au sein de SQL Server utilisant divers composants Microsoft tels que SQL, MDX, DAX dans PowerPivot offrent la flexibilité nécessaire pour transformer des données. Désormais, le langage R, un autre riche ensemble de modules d&#39;apprentissage automatique pour l&#39;analyse de données, est directement intégré à SQL Server 2016. R est un autre langage qui possède une base d&#39;utilisateurs importante, avec Python. Avec les modules disponibles en Python, l&#39;analyse des données devient plus efficace."},{"id":"text-11","heading":"Text","content":"Permettez-moi de vous donner quelques exemples pour prouver que l&#39;utilisation de Python dans SQL Server est un moyen efficace d&#39;extraire des données de serveurs distants."},{"id":"text-12","heading":"Text","content":"Voir comment se connecter à une source de données SQL Server à l&#39;aide de pyodbc"},{"id":"text-13","heading":"Text","content":"Exécutez la requête SQL, dans ce cas, créez la chaîne de connexion qui pointe vers une instance SQL distante et exécutez la requête Dynamic Management View sys.dm_os_waitstas."},{"id":"text-14","heading":"Text","content":"Attribuer la sortie SQL aux trames de données"},{"id":"text-15","heading":"Text","content":"Afficher les 10 premières lignes du jeu de résultats SQL à l&#39;aide de la fonction head\n  La commande head permet d’afficher les premières «n» lignes du cadre de données. Cela ressemble à la commande supérieure de SQL Server. La première colonne (montrant 0 à 9) est l&#39;index par défaut pour le cadre de données"},{"id":"text-16","heading":"Text","content":"Afin de convertir les données du cadre de données en colonnes SQL associées, la clause WITH RESULTS SET est définie à la fin du code. Cela nous donne la possibilité de définir la colonne et les types associés de chaque colonne."},{"id":"text-17","heading":"Text","content":"WITH RESULT SETS requiert que le nombre de colonnes de la définition de résultat soit égal au nombre de colonnes renvoyées par la procédure stockée / requête SQL. Dans les exemples suivants, la sortie de la requête SQL renvoie quatre colonnes: nom_serveur, type_attente, nombre_attentes_attente, nombre_attendus. Celles-ci correspondent à la définition de la clause with result sets."},{"id":"text-18","heading":"Text","content":"EXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas en tant que pd\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = api1401&#39;&#39;)\ncurseur = connexion.curseur ()\nrequête = &#39;&#39;SELECT wait_type, waiting_tasks_count, wait_time_ms FROM sys.dm_os_wait_stats&#39;&#39;\ndf = pd.read_sql (requête, connexion)\nprint (df.head (5))\nconnection.close ()\n&#39;"},{"id":"text-19","heading":"Text","content":"La sortie de requête SQL ci-dessus peut également être renvoyée sous forme de table SQL à l&#39;aide de avec clause de résultat."},{"id":"text-20","heading":"Text","content":"EXEC sp_execute_external_script\n@la langue = N&#39;python&#39;,\n@scénario =\nN&#39;importer pyodbc\nimporter des pandas comme pa\nconnexion = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVEUR = hqdbsp18; UID = sa; PWD = sqlshackai1401&#39;&#39;)\nrequête = &#39;&#39;SELECT @@ nom_serveur, type_attend, nombre_attentes_attente, nombre_attendus FROM sys.dm_os_wait_stats&#39;&#39;\npa.read_sql (requête, connexion)\nOutputDataSet = pa.read_sql (requête, connexion)\n&#39;\nAVEC RÉSULTAT SETS((nom du serveur varchar(20),waiting_Type varchar(256), waiting_tasks_count bigint, wait_time_ms décimal(20,5)))"},{"id":"text-21","heading":"Text","content":"Examinons un exemple pour insérer les exemples de données dans le tableau. L&#39;exemple de requête SQL suivant fournit les informations internes à la base de données, imprimées sous forme de sortie chaîne."},{"id":"text-22","heading":"Text","content":"1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22"},{"id":"text-23","heading":"Text","content":"EXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;importer pyodbc\nimporter des pandas comme pa\navec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                lines = infile.read (). splitlines ()\npour ligne en ligne:\n        serveur = ligne\n        serveur d&#39;imprimante)\n        database = &quot;Master&quot;\n        cnxn = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + serveur + &quot;; PORT = 1443; DATABASE =&quot; + base de données + &quot;; UID = sa; PWD = api1401&quot;)\n        tsql = &quot;&quot; &quot;\n        SÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName &quot;&quot; &quot;\n        print (pa.read_sql (tsql, cnxn)) &#39;"},{"id":"text-24","heading":"Text","content":"Le code SQL suivant crée une table de démonstration sur l&#39;instance cible. SQLShackDemoDB est le nom de la base de données cible."},{"id":"text-25","heading":"Text","content":"UTILISATION [[[[SQLShackDemoDB]\nALLER\nCRÉER TABLE [[[[dbo].[[[[tbl_databaseInventory](\n\t[[[[Nom du serveur] [[[[varchar](100) NE PAS NUL,\n\t[[[[nom de la base de données] [[[[varchar](25) NUL,\n\t[[[[Fichiers de données] [[[[int] NUL,\n\t[[[[DataMB] [[[[int] NUL,\n\t[[[[LogFiles] [[[[int] NUL,\n\t[[[[LogMB] [[[[int] NUL\n) SUR [[[[PRIMAIRE]\nALLER"},{"id":"text-26","heading":"Text","content":"La procédure stockée nommée P_SampleDBInventory_Python est créé avec deux connexions."},{"id":"text-27","heading":"Text","content":"Charger le pyodbc Module Python pour la connectivité de données"},{"id":"text-28","heading":"Text","content":"Construisez la chaîne de connexion cible. Il inclut les détails de l&#39;objet de destination tels que l&#39;instance cible, la base de données et la table."},{"id":"text-29","heading":"Text","content":"Pour la chaîne de connexion cible,"},{"id":"text-30","heading":"Text","content":"Ouvre le curseur"},{"id":"text-31","heading":"Text","content":"La deuxième chaîne de connexion est construite à l&#39;aide d&#39;un fichier. Le fichier est la source des noms de serveur d&#39;entrée. La requête doit traverser les listes pour générer les ensembles de données. Ensuite, l&#39;ensemble de données est parcouru pour extraire les détails de la colonne dans la destination à l&#39;aide de la chaîne de connexion cible"},{"id":"text-32","heading":"Text","content":"Générez l&#39;instruction SQL à l&#39;aide de guillemets triples. Les triples guillemets sont utilisés pour créer des chaînes régulières pouvant s&#39;étendre sur plusieurs lignes."},{"id":"text-33","heading":"Text","content":"L&#39;instruction SQL est exécutée à l&#39;aide du curseur défini"},{"id":"text-34","heading":"Text","content":"Les résultats sont chargés dans la table de destination"},{"id":"text-35","heading":"Text","content":"Appeler la procédure stockée"},{"id":"text-36","heading":"Text","content":"EXEC P_SampleDBInventory_Python"},{"id":"text-37","heading":"Text","content":"Vérifier la sortie SQL"},{"id":"text-38","heading":"Text","content":"1\n2\n3\n4\n5\n6\n7\n8\n9\ndix\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41"},{"id":"text-39","heading":"Text","content":"CRÉER Procédure P_SampleDBInventory_Python\nCOMME\nEXEC sp_execute_external_script\n@la langue = N&#39;Python&#39;  \n, @scénario = N&#39;\nimporter pyodbc\nimporter des pandas comme pa\nInstance = &#39;&#39;HQBT01&#39;&#39;\nBase de données = &#39;&#39;SQLShackDemoDB&#39;&#39;\nuname = &#39;&#39;thanVitha2017&#39;&#39;\npwd = &#39;&#39;thanVitha2017401 $&#39;&#39;\nconn1 = pyodbc.connect (&#39;&#39;DRIVER = Pilote ODBC 13 pour SQL Server; SERVER =&#39;&#39;+ Instance +&#39;&#39;; PORT = 1443; DATABASE =&#39;&#39;+ Database +&#39;&#39;; UID =&#39;&#39;+ uname +&#39;&#39;; PWD =&#39;&#39;+ pwd)\ncur1 = conn1.cursor ()"},{"id":"text-40","heading":"Text","content":"avec open (&quot;f:  PowerSQL  server.txt&quot;, &quot;r&quot;) comme infile:\n                Entrée = infile.read (). Splitlines ()\npour l&#39;entrée en entrée:\n        srv = sInput\n        print (srv)\n        db = &quot;master&quot;\n        conn2 = pyodbc.connect (&quot;DRIVER = pilote ODBC 13 pour SQL Server; SERVEUR =&quot; + srv + &quot;; PORT = 1443; DATABASE =&quot; + db + &quot;; UID = sa; PWD = as21201&quot;)\n        cur2 = conn2.cursor ()\n        SQL1 = &quot;&quot; &quot;\nSÉLECTIONNER \n@@ SERVERNAME nom_serveur,\nCONVERT (VARCHAR (25), DB.name) AS DatabaseName,\n(SELECT nombre (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid! = 0) AS [DataMB],\n(SELECT count (1) FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogFiles],\n(SELECT cast (SUM ((taille * 8) / 1024) sous forme décimale (10,2)) FROM FROM sysaltfiles WHERE DB_NAME (dbid) = DB.name AND groupid = 0) AS [LogMB]\nFROM sys.databases DB\nORDER BY DatabaseName; &quot;&quot; &quot;\n        avec cur2.execute (SQL1):\n                rangée = curseur.fetchone ()\n                en rangée:  \n                        print (str (row)[0]) + &quot;&quot; + Str (rangée[1]) + &quot;&quot; + Str (rangée[2]) + &quot;&quot; + Str (rangée[3]) + &quot;&quot; + Str (rangée[4]) + &quot;&quot; + Str (rangée[5]))\n                        SQL2 = &quot;INSERT INTO [tbl_DatabaseInventory] (Nom du serveur, Nom de la base de données, DataFiles, DataMB, LogFiles, LogMB) VALEURS (?,?,?,?,?,?); &quot;\n                        avec cur1.execute (SQL2, str (ligne[0]), str (rangée[1]),rangée[2],rangée[3],rangée[4],rangée[5]):\n                                impression (&#39;&#39;Inséré avec succès!&#39;&#39;)\n                        rangée = curseur.fetchone () &#39;\nFIN"},{"id":"text-41","heading":"Text","content":"Sortie:"},{"id":"text-42","heading":"Text","content":"Emballer\n  Donc là vous l&#39;avez. Bien que les exemples fournis soient assez simples, j&#39;espère que vous pourrez voir à quel point Python pourrait être utile pour un administrateur de base de données également, et pas seulement pour un spécialiste en informatique ou en données."},{"id":"text-43","heading":"Text","content":"La vraie beauté est que tout ce code pourrait s&#39;asseoir dans une procédure stockée; quelque chose que vous ne pouvez pas tout faire aussi bien avec PowerShell."},{"id":"text-44","heading":"Text","content":"L&#39;intégration de Python dans SQL Server 2017 offre aux chercheurs en données un moyen simple d&#39;interagir avec leurs données directement dans le moteur de base de données, ainsi qu&#39;aux développeurs un moyen simple d&#39;intégrer des modèles Python à leur application via de simples procédures stockées."},{"id":"text-45","heading":"Text","content":"Prashanth Jayaram\nJe suis un technologue en bases de données ayant plus de 11 ans d’expérience pratique et riche en technologies de bases de données. Je suis un professionnel certifié Microsoft et je suis titulaire d&#39;un diplôme en maîtrise d&#39;applications informatiques. \nMa spécialité réside dans la conception et la mise en œuvre de solutions de haute disponibilité et de migration multi-plateformes de bases de données. Les technologies actuellement utilisées sont SQL Server, PowerShell, Oracle et MongoDB.\nVoir tous les messages de Prashanth Jayaram"},{"id":"text-46","heading":"Text","content":"Derniers articles de Prashanth Jayaram (voir tout)"},{"id":"text-47","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2019/05/word-image-12.png"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/05/03/limportance-de-python-dans-ladministration-de-sql-server-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/limportance-de-python-dans-ladministration-de-sql-server-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/limportance-de-python-dans-ladministration-de-sql-server-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}