2009-10-29 12 views

Répondre

3

Oui - INFORMATION_SCHEMA.TABLES devrait être ce que vous cherchez.

Il vous donnera quelque chose comme:

aspnetdb dbo aspnet_Paths      BASE TABLE 
aspnetdb dbo aspnet_PersonalizationAllUsers BASE TABLE 
aspnetdb dbo aspnet_PersonalizationPerUser  BASE TABLE 
aspnetdb dbo vw_aspnet_WebPartState_Paths  VIEW 
aspnetdb dbo vw_aspnet_WebPartState_Shared  VIEW 
aspnetdb dbo vw_aspnet_WebPartState_User  VIEW 
aspnetdb dbo aspnet_Applications    BASE TABLE 

Si vous voulez savoir sur les colonnes d'une table, regardez INFORMATION_SCHEMA.COLUMNS.

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'aspnet_Users' 

vous donnera tous les détails pour les colonnes pour la table spécifiée.

+0

Je sais que je peux trouver toutes les informations dans ces tableaux, mais je cherchais un moyen automatique de récupérer le script de création complet, y compris toutes les contraintes pour une table, comme je peux l'obtenir dans MSSQL Management Studio . –

+0

Je ne pense pas que vous pouvez simplement "trouver" le script de création complet n'importe où dans les vues du catalogue système. Si vous voulez un script complet, vous devez utiliser SMO, comme l'a suggéré Nestor - il a une fonction de script sur n'importe quel objet de base de données - qui inspecte probablement ces vues de catalogue système et concatène les informations dans un script de création complet. –

0

Vous pouvez utiliser SMO (Microsoft.SqlServer.Smo) à partir de .NET pour scripter la table.

+0

oh je vois .. désolé, je n'ai pas compris votre question. – Nestor

1

L'utilisation de INFORMATION_SCHEMA pour les vues et le code échoue. Les données sont limitées à nvarchar (4000), donc les choses plus longues ne seront pas lues. Utilisez sys.sql_modules ou OBJECT_DEFINITION.

Pour les tables, c'est plus difficile. Une "table" se compose de colonnes, de contraintes, d'index, éventuellement de règles, d'UDT (ai-je oublié quelque chose?). C'est pourquoi SSMS dispose de tant d'options de script de table que d'une vue ou d'un proc stocké.

Je suggérerais de profiler SSMS et espérer qu'il n'utilise pas SMO ... ou utiliser SMO via le code CLR ou même xp_cmdshell.

+0

Merci, des informations précieuses. –

+0

NVARCHAR (MAX) * pierres *. Ah, les cerceaux que nous avons dû traverser dans SQL2K .... –