Est-il possible d'exécuter une requête SQL sans afficher les résultats ?
comme
Select * from Table_Name
après l'exécution de cette requête, le résultat ne doit pas s'afficher dans le serveur SQL.
Est-il possible d'exécuter une requête SQL sans afficher les résultats ?
comme
Select * from Table_Name
après l'exécution de cette requête, le résultat ne doit pas s'afficher dans le serveur SQL.
Je suis surpris que personne n'ait trouvé la réponse : activer l'option "jeter les résultats de la requête après l'exécution". Je suis presque sûr que c'est ce que l'interviewer recherchait. SET FMT ONLY
est une chose totalement différente, selon moi.
Dans le SSMS
La raison pour laquelle vous souhaitez procéder ainsi est d'éviter d'avoir à attendre et à gaspiller des ressources pour que les résultats soient chargés dans la grille, tout en étant en mesure de disposer, par exemple, du plan d'exécution réel.
Exécution se renvoie un jeu d'enregistrements. Il peut n'avoir aucune ligne, bien sûr, mais obtenir un résultat.
Vous pouvez supprimer des lignes, mais pas l'ensemble des résultats, à l'aide de la fonction SET FMTONLY
SET FMTONLY ON
SELECT * FROM sys.tables
SET FMTONLY OFF
SELECT * FROM sys.tables
Je n'en ai jamais eu l'utilité personnellement...
Editer 2018. Comme indiqué, voir la réponse de @deroby pour une meilleure solution de nos jours.
Cela me semble être une question d'entretien douteuse. Je l'ai fait, j'ai eu besoin de le faire, mais vous n'auriez besoin de le faire que dans des circonstances assez obscures. Obscures, mais parfois très importantes.
Comme l'indique @gbn, un moyen programmatique consiste à utiliser des SET FMTONLY
(merci, maintenant je n'ai plus besoin de le sortir de mes vieux fichiers script). Certains programmes et utilitaires procèdent de la sorte pour les requêtes SQL ; ils soumettent d'abord une requête avec FMTONLY ON, afin de déterminer la disposition de la structure de la table résultante, puis, une fois qu'ils l'ont préparée, ils l'exécutent à nouveau avec FMTONLY OFF, afin d'obtenir les données réelles. (J'ai découvert cela lorsque la procédure a appelé une deuxième procédure, que cette dernière a renvoyé l'ensemble des données et que, pour d'obscures raisons, tout le château de cartes s'est écroulé).
Cette opération peut également être effectuée dans le SSMS. Pour toutes les fenêtres d'interrogation, sous Outils/Options, Résultats de la requête/SQL Server/Résultats vers XX, cochez "Abandonner les résultats après l'exécution de la requête" ; pour la fenêtre actuelle uniquement, sous Requête/Options de la requête, Résultats/XX, même case à cocher. L'avantage est que la requête s'exécute sur le serveur de base de données, mais que les résultats ne sont pas pris en compte. données les résultats ne seront pas renvoyés. Cela peut s'avérer très utile si vous vérifiez le plan de la requête mais que vous ne voulez pas recevoir les 10 Go de données qui en résultent (à travers le réseau sur votre ordinateur portable), ou si vous faites des tests en boucle, car SSMS ne peut accepter qu'un certain nombre de résultats d'une "exécution" donnée avant d'arrêter la requête avec un message "too many result sets" (trop de résultats). (Hmm, revérifiez ce que j'ai dit à propos du "plan de requête uniquement" - je pense que c'est ce qu'il fait, mais cela fait longtemps).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.