Quelles sont les fonctionnalités cachées de SQL Server ?
Par exemple, des procédures stockées système non documentées, des astuces pour faire des choses qui sont très utiles mais pas suffisamment documentées?
Réponses
Merci à tous pour toutes les bonnes réponses!
Procédures stockées
- sp_msforeachtable: exécute une commande avec '?' remplacé par chaque nom de table (v6.5 et plus)
- sp_msforeachdb: exécute une commande avec '?' remplacé par chaque nom de base de données (v7 et plus)
- sp_who2: tout comme sp_who, mais avec beaucoup plus d'informations pour le dépannage des blocs (v7 et plus)
- sp_helptext: Si vous voulez le code d'une procédure stockée, affichez & UDF
- sp_tables: retourne une liste de toutes les tables et vues de la base de données dans la portée.
- sp_stored_procedures: retourne une liste de toutes les procédures stockées
- xp_sscanf: lit les données de la chaîne dans les emplacements d'argument spécifiés par chaque argument de format.
- xp_fixeddrives:: recherchez le lecteur fixe avec le plus grand espace libre
- sp_help: si vous souhaitez connaître la structure, les index et les contraintes d'une table. Vues et UDF également. Le raccourci est Alt + F1
Extraits
- Renvoyer des lignes dans un ordre aléatoire
- Tous les objets utilisateur de la base de données par date de dernière modification
- Date de retour uniquement
- Recherchez les enregistrements dont la date se situe quelque part dans la semaine en cours.
- Recherchez les enregistrements dont la date s'est produite la semaine dernière.
- Renvoie la date du début de la semaine en cours.
- Renvoie la date du début de la semaine dernière.
- Voir le texte d'une procédure qui a été déployée sur un serveur
- Supprimer toutes les connexions à la base de données
- Table de contrôle
- Somme de contrôle de ligne
- Supprimer toutes les procédures dans une base de données
- Remappez correctement les ID de connexion après la restauration
- Appeler des procédures stockées à partir d'une instruction INSERT
- Rechercher des procédures par mot-clé
- Supprimer toutes les procédures dans une base de données
- Recherchez par programme le journal des transactions d'une base de données.
Les fonctions
- HashBytes ()
- EncryptByKey
- Commande PIVOT
Divers
- Extras de chaîne de connexion
- TableDiff.exe
- Déclencheurs pour les événements d'ouverture de session (nouveau dans le Service Pack 2)
- Amélioration des performances avec des colonnes calculées persistantes (pcc).
- Paramètre DEFAULT_SCHEMA dans sys.database_principles
- Paramétrage forcé
- Format de stockage Vardecimal
- Comprendre les requêtes les plus populaires en quelques secondes
- Bases de données partagées évolutives
- Fonction de filtrage des tables / procédures stockées dans SQL Management Studio
- Drapeaux de trace
- Numéro après une
GO
répétition du lot - Sécurité à l'aide de schémas
- Cryptage utilisant des fonctions de cryptage intégrées, des vues et des tables de base avec des déclencheurs
sql-server
tsql
Sklivvz
la source
la source
Réponses:
Dans Management Studio, vous pouvez mettre un nombre après un marqueur de fin de lot GO pour que le lot soit répété autant de fois:
Imprime «X» 10 fois. Cela peut vous éviter de copier / coller fastidieux lorsque vous faites des choses répétitives.
la source
De nombreux développeurs SQL Server ne semblent toujours pas connaître la clause OUTPUT (SQL Server 2005 et versions ultérieures) sur l'instruction DELETE, INSERT et UPDATE.
Il peut être extrêmement utile de savoir quelles lignes ont été INSERTed, UPDATEd ou DELETEd, et la clause OUTPUT permet de le faire très facilement - elle permet d'accéder aux tables "virtuelles" appelées
inserted
etdeleted
(comme dans les déclencheurs):Si vous insérez des valeurs dans une table qui a un champ de clé primaire INT IDENTITY, avec la clause OUTPUT, vous pouvez obtenir le nouvel ID inséré immédiatement:
Et si vous mettez à jour, il peut être extrêmement utile de savoir ce qui a changé - dans ce cas,
inserted
représente les nouvelles valeurs (après la MISE À JOUR), tout en faisantdeleted
référence aux anciennes valeurs avant la MISE À JOUR:Si beaucoup d'informations seront retournées, la sortie de OUTPUT peut également être redirigée vers une table temporaire ou une variable de table (
OUTPUT INTO @myInfoTable
).Extrêmement utile - et très peu connu!
Marc
la source
sp_msforeachtable
: Exécute une commande avec '?' remplacé par chaque nom de table. par exempleVous pouvez émettre jusqu'à 3 commandes pour chaque table
Aussi,
sp_MSforeachdb
la source
Extras de chaîne de connexion:
MultipleActiveResultSets = true;
Cela permet à ADO.Net 2.0 et supérieur de lire plusieurs jeux de résultats en lecture seule et en avant sur une seule connexion de base de données, ce qui peut améliorer les performances si vous effectuez beaucoup de lecture. Vous pouvez l'activer même si vous faites un mélange de types de requêtes.
Nom de l'application = MyProgramName
Maintenant, lorsque vous souhaitez voir une liste des connexions actives en interrogeant la table sysprocesses, le nom de votre programme apparaîtra dans la colonne nom_programme au lieu de ".Net SqlClient Data Provider"
la source
TableDiff.exe
Lien
la source
Une technique TSQL moins connue pour renvoyer des lignes dans un ordre aléatoire:
la source
Dans Management Studio, vous pouvez obtenir rapidement une liste de colonnes séparées par des virgules pour une table en:
C'est pratique lorsque vous ne voulez pas utiliser le format odieux renvoyé en cliquant avec le bouton droit sur la table et en choisissant Script Table As ..., puis Insert To ... Cette astuce fonctionne avec les autres dossiers en ce qu'elle vous donnera une liste de noms séparés par des virgules contenus dans le dossier.
la source
Constructeurs de lignes
Vous pouvez insérer plusieurs lignes de données avec une seule instruction d'insertion.
la source
Si vous souhaitez connaître la structure de la table, les index et les contraintes:
la source
HashBytes () pour renvoyer le hachage MD2, MD4, MD5, SHA ou SHA1 de son entrée.
la source
Déterminer les requêtes les plus populaires
Lien avec la commnade
la source
L'onglet des résultats spatiaux peut être utilisé pour créer de l'art .
entrez la description du lien ici http://michaeljswart.com/wp-content/uploads/2010/02/venus.png
la source
SAUF et INTERSECT
Au lieu d'écrire des jointures et des sous-requêtes élaborées, ces deux mots clés sont un raccourci beaucoup plus élégant et un moyen lisible d'exprimer l'intention de votre requête lors de la comparaison de deux résultats de requête. Nouveautés de SQL Server 2005, elles complètent fortement UNION qui existe déjà depuis des années dans le langage TSQL.
Les concepts EXCEPT, INTERSECT et UNION sont fondamentaux dans la théorie des ensembles qui sert de base et de fondement à la modélisation relationnelle utilisée par tous les SGBDR modernes. Désormais, les résultats de type diagramme de Venn peuvent être générés de manière plus intuitive et assez facile à l'aide de TSQL.
la source
Je sais que ce n'est pas exactement caché, mais pas trop de gens connaissent la commande PIVOT . J'ai pu modifier une procédure stockée qui utilisait des curseurs et j'ai pris 2 minutes pour exécuter un morceau de code rapide de 6 secondes, soit un dixième du nombre de lignes!
la source
utile lors de la restauration d'une base de données à des fins de test ou autre. Re-mappe correctement l'ID de connexion:
la source
Supprimez toutes les connexions à la base de données:
la source
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
empêchera également toute nouvelle connexion de se produire.Table de contrôle
Somme de contrôle de ligne
la source
Je ne sais pas si c'est une fonctionnalité cachée ou non, mais je suis tombé sur cela et l'ai trouvé utile à de nombreuses reprises. Vous pouvez concaténer un ensemble d'un champ dans une seule instruction select, plutôt que d'utiliser un curseur et de parcourir cette instruction select.
Exemple:
Résultats:
la source
Si vous voulez le code d'une procédure stockée, vous pouvez:
(je ne sais pas si c'est une fonction cachée, mais je l'utilise tout le temps)
la source
Une astuce de procédure stockée est que vous pouvez les appeler à partir d'une instruction INSERT. J'ai trouvé cela très utile lorsque je travaillais sur une base de données SQL Server.
la source
Dans SQL Server 2005/2008 pour afficher les numéros de ligne dans un résultat de requête SELECT:
COMMANDER PAR est une clause obligatoire. La clause OVER () indique au moteur SQL de trier les données sur la colonne spécifiée (dans ce cas, OrderId) et d'attribuer des numéros conformément aux résultats du tri.
la source
Utile pour analyser les arguments des procédures stockées: xp_sscanf
la source
Date de retour uniquement
ou
la source
dm_db_index_usage_stats
Cela vous permet de savoir si les données d'une table ont été mises à jour récemment même si vous n'avez pas de colonne DateUpdated sur la table.
Code depuis: http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/
Informations référencées à partir de: SQL Server - Quelle est la date / heure de la dernière ligne insérée d'une table?
Disponible dans SQL 2005 et versions ultérieures
la source
Voici quelques fonctionnalités que je trouve utiles mais que beaucoup de gens ne semblent pas connaître:
Lien
Lien
la source
Recherchez les enregistrements dont la date se situe quelque part dans la semaine en cours.
Recherchez les enregistrements dont la date s'est produite la semaine dernière.
Renvoie la date du début de la semaine en cours.
Renvoie la date du début de la semaine dernière.
la source
Pas tellement une fonctionnalité cachée mais la configuration des mappages de touches dans Management Studio sous Tools \ Options \ Keyboard: Alt + F1 est défini par défaut sur sp_help "texte sélectionné" mais je ne peux pas vivre sans l'ajout de Ctrl + F1 pour sp_helptext "texte sélectionné"
la source
Colonnes calculées persistantes
Lien
la source
Il y a des moments où il n'y a pas de colonne appropriée pour trier, ou vous voulez simplement l'ordre de tri par défaut sur une table et vous voulez énumérer chaque ligne. Pour ce faire, vous pouvez mettre "(sélectionnez 1)" dans la clause "order by" et vous obtiendrez ce que vous voulez. Neat, hein?
la source
Cryptage simple avec EncryptByKey
la source