データベース内のすべてのテーブルに対して Max(ID) を選択しようとしています。以下のクエリを試しましたが、使用可能な AUTO-INCREMENT 列がありません。他に試せることはありますか?
SELECT TABLE_NAME, AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
データベース内のすべてのテーブルに対して Max(ID) を選択しようとしています。以下のクエリを試しましたが、使用可能な AUTO-INCREMENT 列がありません。他に試せることはありますか?
SELECT TABLE_NAME, AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
DB の各 IDENTITY 列の最大値を取得しようとしていますか? これは、前の回答のスクリプトを変更して、sys.columns テーブルの is_identity 列を調べることで可能になります。
CREATE TABLE #x(t NVARCHAR(520), c BIGINT);
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';
SELECT @sql = @sql + N'INSERT #x SELECT '''
+ QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + ''',
MAX(' + c.name + ') FROM '
+ QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + ';'
FROM sys.columns C
INNER JOIN sys.tables T ON C.object_id = T.object_id
INNER JOIN sys.schemas s ON S.schema_id = T.schema_id
WHERE is_identity = 1;
EXEC sp_executesql @sql;
SELECT t, c FROM #x;
DROP TABLE #x;