2
私はサーバに10のデータベースを持っていますが、これらすべてのデータベースのテーブルを照会することは可能ですか?すべてのサーバからテーブルを取得
select * from master..sysobjects where name ='table'
私はサーバに10のデータベースを持っていますが、これらすべてのデータベースのテーブルを照会することは可能ですか?すべてのサーバからテーブルを取得
select * from master..sysobjects where name ='table'
以下のSQLを使用して、各データベースのすべてのテーブルを取得できます。あなたは
DECLARE @databaseName VARCHAR(30)
DECLARE @TABLES TABLE ([Database] VARCHAR(MAX), [Table_Name] VARCHAR(MAX))
DECLARE [DBs] CURSOR FOR
SELECT name FROM sys.databases
OPEN [DBs]
FETCH NEXT FROM [DBs] INTO @databaseName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SQL VARCHAR(MAX) = 'SELECT ''' + @databaseName +''' as [Database], Name FROM ['+ @databaseName +'].sys.tables'
INSERT INTO @TABLES
EXEC (@SQL)
FETCH NEXT FROM [DBs] INTO @databaseName
END
CLOSE [DBs]
DEALLOCATE [DBs]
SELECT * FROM @TABLES
あなたは私を返信してください、次の手順
Declare @str nvarchar(max)
Select name into #temp from sys.databases
Select 'Select name from '+name+'.sys.tables' AS statements into #temp1 from #temp
Set @str=(Select distinct Stuff((Select ' '+statements from #temp1 for xml path('')),1,1,'') from #temp1)
Exec (@str)
を使用することができたい場合は、データベースごとに何かを得るために@SQLパラメータにSQLを編集することができます。この上に