OBTENER MAX (ID) PARA TODAS LAS TABLAS SERVIDOR SQL

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'

preguntado el 09 de septiembre de 13 a las 22:09

¿Estás hablando del Object_id máximo? -

2 Respuestas

¿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

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 or haz tu propia pregunta.