OBTENER MAX (ID) PARA TODAS LAS TABLAS SERVIDOR SQL
Frecuentes
Visto 6,272 equipos
0
Estoy tratando de seleccionar Max (ID) para todas las tablas en mi base de datos. Intenté la siguiente consulta, pero no hay una columna AUTO-INCREMENTO disponible. ¿Hay algo más que pueda probar?
SELECT TABLE_NAME, AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
2 Respuestas
4
¿Está tratando de obtener el valor máximo para cada columna de IDENTIDAD en su base de datos? eso es posible modificando el script en una respuesta anterior para examinar la columna is_identity en la tabla sys.columns.
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;
Respondido el 09 de Septiembre de 13 a las 23:09
0
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(ID) FROM '
+ QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + ';'
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
INNER JOIN sys.columns AS c
ON t.[object_id] = c.[object_id]
WHERE c.name = N'ID';
EXEC sp_executesql @sql;
SELECT t, c FROM #x;
DROP TABLE #x;
Respondido el 09 de Septiembre de 13 a las 22:09
Recibo el siguiente error: Conflicto de tipo de operando: el identificador único es incompatible con bigint - Klay
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql-server max information-schema or haz tu propia pregunta.
¿Estás hablando del Object_id máximo? - orgtigger