Comment puis-je retourner les types de données SQL de ma requête?
J'ai une requête SQL qui interroge un énorme (comme dans des centaines de points de vue et les tables sont difficiles à lire des noms comme CMM-RPC-FAP-AJOUTER) de la base de données que je n'ai pas besoin ni envie de comprendre. Le résultat de cette requête doit être stocké dans une table intermédiaire pour nourrir un rapport.
J'ai besoin de créer la mise en scène de la table, mais avec des centaines de points de vue/tables de creuser à travers pour trouver les types de données qui sont représentés ici, je me demande si il ya une meilleure façon de construire cette table.
Quelqu'un peut conseiller comment je pourrais utiliser les outils SQL Server 2008 divine à la source des types de données dans ma base de données SQL 2000?
Exemple général, je veux savoir à partir d'une requête comme:
SELECT Auth_First_Name, Auth_Last_Name, Auth_Favorite_Number
FROM Authors
Au lieu de les résultats réels, je veux savoir que:
Auth_First_Name is char(25)
Auth_Last_Name is char(50)
Auth_Favorite_Number is int
Je ne suis pas intéressé dans les contraintes, vraiment, je veux juste savoir les types de données.
Vous devez vous connecter pour publier un commentaire.
pourrait vous aider à démarrer.
SELECT * FROM INFORMATION_SCHEMA.Columns
Vous pouvez également insérer les résultats (ou le top 10 des résultats de recherche) dans une table temporaire et obtenir les colonnes de la table temporaire (aussi longtemps que les noms de colonne sont tous différents).
Alors utiliser:
ou
Extrapolée à partir de la Aaron réponse ici.
Vous pouvez également utiliser...
...dans le cas où vous n'avez pas un accès direct aux métadonnées (par exemple, une requête de serveur lié peut-être?).
http://msdn.microsoft.com/en-us/library/ms178550.aspx
Dans SQL Server 2005 et au-delà, vous êtes mieux utiliser les affichages catalogue (sys.les colonnes), par opposition à INFORMATION_SCHEMA. À moins que la portabilité vers d'autres plates-formes est important. Il suffit de garder à l'esprit que le INFORMATION_SCHEMA points de vue ne changera pas et donc ils seront progressivement manque d'informations sur les nouvelles fonctions, etc. dans les versions successives de SQL Server.
text
,ntext
, etimage
. Si les gens sont toujours à l'aide de ceux d'aujourd'hui, ce n'est qu'une petite partie de leurs problèmes...Il DOIT être en moyen plus facile de faire cela... Faible et voici, il y a...!
"sp_describe_first_result_set" est votre ami!
Maintenant, je ne réalise la question a été posée spécifiquement pour SQL Server 2000, mais je cherchais une solution similaire pour les versions ultérieures et la découverte de l'un support natif de SQL pour atteindre cet objectif.
Dans SQL Server 2012, cf. "sp_describe_first_result_set" - Lien de BOL
J'avais déjà mis en œuvre une solution en utilisant une technique similaire à @Trisped de l' ci-dessus et le déchira pour mettre en œuvre le natif SQL Server mise en œuvre.
Dans le cas où vous n'êtes pas sur SQL Server 2012 ou SQL Azure Base de données, voici la procédure stockée que j'ai créé pour le pré-era 2012 bases de données:
Pour SQL Server 2012 et au-dessus: Si vous placez la requête dans une chaîne de caractères, alors vous pouvez obtenir le résultat de définir des types de données comme suit:
Vous pouvez utiliser les colonnes des alias pour mieux la recherche de la sortie.
Pouvez-vous sortir avec de recréer la table intermédiaire à partir de zéro à chaque fois que la requête est exécutée? Si oui, vous pourriez utiliser
SELECT ... INTO
syntaxe et laissez SQL Server préoccuper de la création de la table en utilisant le bon type de colonne, etc.SELECT ... INTO ... FROM ... WHERE 1=0
syntaxe comme un one-off pour créer une table factice, puis la Gestion de l'utilisation du Studio de faire un script de création de la table SQL pour le mannequin de la table?information_schema.columns
. MerciCela vous donnera tout de colonne liés à la propriété.
aidera à identifier les types de données de la requête par l'analyse des types de données de premier jeu de résultats de la requête
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-describe-first-result-set-transact-sql?view=sql-server-2017