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
あなたはすべてのテーブルが同じキーフィールド名を持っていると仮定していますか? – asmgx
はい、フィールド名としてのid –