« Scripts sql (maintenance) » : différence entre les versions
(Page créée avec « ===RootOID=== Retourne le max des racines d'OID d'une base de données avec OID caractères. <pre> DECLARE @SQL nvarchar(max) DECLARE @TableName sysname DECLARE @TableUI... ») |
|||
Ligne 45 : | Ligne 45 : | ||
DEALLOCATE tables_cursor | DEALLOCATE tables_cursor | ||
</pre> | </pre> | ||
{{tip|La valeur de RootOID est stockée dans la séquence "RootOID" de la base}} | |||
[[Category:Base de données]] | [[Category:Base de données]] |
Dernière version du 27 novembre 2023 à 08:41
RootOID
Retourne le max des racines d'OID d'une base de données avec OID caractères.
DECLARE @SQL nvarchar(max) DECLARE @TableName sysname DECLARE @TableUID int DECLARE @RootOID int DECLARE @MaxUID int DECLARE @MaxTableName sysname SELECT @MaxUID = 0 SELECT @RootOID = cValue from sysCounter where cName='RootOID' DECLARE tables_cursor CURSOR FAST_FORWARD FOR select t.name from sys.all_columns c join sys.tables t on t.object_id = c.object_id where c.name='oid' OPEN tables_cursor FETCH NEXT FROM tables_cursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN SELECT @SQL = 'select @TableUID = MAX(convert(INT, CONVERT(VARBINARY,''0x''+SUBSTRING(oid,21,8),1) )) from '+ @TableName EXEC sp_executesql @SQL, N'@TableUID int OUTPUT, @TableName varchar', @TableUID OUTPUT, @TableName = @TableName IF (@TableUID > @MaxUID ) BEGIN SELECT @MaxUID=@TableUID SELECT @MaxTableName = @TableName END FETCH NEXT FROM tables_cursor INTO @TableName END SELECT @MaxTableName, @MaxUID, @RootOID CLOSE tables_cursor DEALLOCATE tables_cursor