Je cherche essentiellement à trouver toute la table de toutes les bases de données présentes dans le serveur SQL en utilisant sp_msforeachdb.Comment utiliser une variable de table temporaire (par exemple @temp) pour conserver le résultat de sp_msforeachdb
Si j'écris exec sp_msforeachdb 'select "?" AS DatabaseNames,* from [?].sys.tables'
j'obtenir le résultat bien, mais pour chaque base de données, un ensemble séparé d'enregistrement sera créé.
Maintenant, si j'utilise
CREATE TABLE #DBINFO
(
DbName NVARCHAR(255)
,ObjectID NVARCHAR(255)
)
INSERT INTO #DBINFO
exec sp_msforeachdb 'select "?" AS DatabaseNames,ObjectID from [?].sys.tables'
SELECT * FROM #DBINFO
Cela fonctionne très bien.
Cependant, si je
Declare @DBINFO Table(DbName NVARCHAR(255),ObjectID NVARCHAR(255))
INSERT INTO @DBINFO
exec sp_msforeachdb 'select "?" AS DatabaseNames,ObjectID from [?].sys.tables'
SELECT * FROM @DBINFO
Il n'accepte pas
De plus, si je
;With CTE AS
(
exec sp_msforeachdb 'select "?" AS DatabaseNames,* from [?].sys.tables'
)
Select * from CTE
, il jette l'erreur (Pour l'instant, je me souviens que DONOT).
La question est
1) Est-il possible de faire la même chose en utilisant une table de variables
2) Est-il possible d'obtenir la même chose faite en utilisant CTE?
SQL Server 2005.
Merci