2017-07-31 9 views
1

すべてのデータベースのすべてのテーブルからデータベース名、スキーマ名、テーブル名、最大ID値を取得したいとします。次のクエリを使用すると、DBname、Schema、およびTableNameが取得されますが、max(id)値をテーブルにも取得する方法がわかりません。すべてのデータベースのすべてのテーブルから最大値を取得する

DECLARE @DBName VARCHAR(256) 
DECLARE @varSQL VARCHAR(256) 
DECLARE @getDBName CURSOR 
SET @getDBName = CURSOR FOR SELECT name FROM sys.databases 
CREATE TABLE #TmpTable (
         DBName VARCHAR(256), 
         SchemaName VARCHAR(256), 
         TableName VARCHAR(256) 
         ) 
OPEN @getDBName 
    FETCH NEXT FROM @getDBName INTO @DBName 
    WHILE @@FETCH_STATUS = 0 
     BEGIN 

      SET @varSQL = 'USE ' + @DBName + '; 
      INSERT INTO #TmpTable 
      SELECT '''+ @DBName + ''' AS DBName, 
      SCHEMA_NAME(schema_id) AS SchemaName, 
      name AS TableName 
      FROM sys.tables' 

      EXEC(@varSQL) 

      FETCH NEXT FROM @getDBName INTO @DBName 
     END 
CLOSE @getDBName 

DEALLOCATE @getDBName 
SELECT * FROM #TmpTable 
DROP TABLE #TmpTable 
+0

あなたはすべてのテーブルが同じキーフィールド名を持っていると仮定していますか? – asmgx

+0

はい、フィールド名としてのid –

答えて

1
SELECT 
    '@DBName' AS DBName, 
     IDENT_CURRENT(Name) MaxId, 
     SCHEMA_NAME(Schema_ID) AS SchemaName, 
     name AS TableName 
FROM sys.Tables 
関連する問題