Dicas que peguei no site da SAP para verificar possiveis erros nas tabelas/campos de usuários:
SELECT TableName FROM OUTB WHERE NOT EXISTS (SELECT 1 FROM sysobjects WHERE xtype='U' AND [name]='@'+TableName)
2) Verificar se UDT não foi registrado:
SELECT * FROM sysobjects WHERE [name] LIKE '@%' AND name NOT IN (SELECT '@'+tablename FROM outb UNION ALL SELECT '@'+logtable FROM outb WHERE logtable is NOT NULL) AND xtype='U'
3) UDF foi definido, mas não registrado no UDT:
SELECT T0.TableID FROM CUFD T0 WHERE left(T0.TableID,1)='@' AND NOT EXISTS (SELECT 1 FROM OUTB T1 WHERE '@'+T1.TableName = T0.TableID or '@'+T1.LogTable = T0.TableID
4) UDF foi definido, mas não existe:
SELECT TableID, AliasID FROM CUFD WHERE NOT EXISTS (SELECT t0.name, t1.name FROM sysobjects t0 INNER JOIN syscolumns t1 ON t0.xtype='U' AND t0.id=t1.id WHERE t0.name=TableID AND t1.name='U_'+AliasID) AND TableID NOT IN ('BTNT', 'OIBT', 'OSRI', 'SRNT')
5) Verifica se UDF tem propriedades definida para UDF não exitente.
UDF valores válidos são definidos para UDF não-existente:
SELECT TableId, FieldID FROM UFD1 T WHERE NOT EXISTS (SELECT 1 FROM CUFD WHERE TableId=T.TableId AND FieldID=T.FieldID)
6) UDF não corresponde ao padrão:
SELECT T1.UDF, T0.nvarchar_size as 'act_size', T1.nvarchar_size as 'def_size' FROM (SELECT T2.name + '.' + T3.name as 'UDF', T3.length/2 as 'nvarchar_size' FROM sysobjects T2 INNER JOIN syscolumns T3 ON T2.id=T3.id WHERE T2.xtype='U' AND T3.xtype IN (SELECT xtype FROM systypes WHERE [name]='nvarchar')) T0
7a) UDF contém espaços extras em TableID campo em campos Usuário na mesma descrição da tabela CUFD:
SELECT * FROM CUFD WHERE datalength(TableID)<>LEN(TableID) AND ascii(SUBSTRING (TableID, LEN(TableID)+1, 1)) =32
7b) UDF contém espaços extras em campo AliasID em campos de usuário na mesma descrição CUFD:
SELECT * FROM CUFD WHERE datalength(AliasID)<>len(AliasID) AND ascii(SUBSTRING (AliasID, LEN(AliasID)+1, 1)) =32
8) UDF existe, mas não está definido:
SELECT T1.name [Table name], T0.name [Column name] FROM sys.columns T0 JOIN sys.objects T1 ON T0.object_id = T1.object_id left JOIN CUFD T2 ON T2.TableID = T1.name AND ('U_' + T2.AliasID) = T0.name WHERE T1.type = 'U' AND T0.name LIKE 'U/_%' escape '/' AND ('U_' + T2.AliasID) is NULL AND (T0.name !='U_NAME' AND T1.name NOT IN ('OUSR', 'AUSR'))
- User Data Table (Tabela de usuário) - UDT
- User Data File (Campo de usuário) - UDF
SELECT TableName FROM OUTB WHERE NOT EXISTS (SELECT 1 FROM sysobjects WHERE xtype='U' AND [name]='@'+TableName)
2) Verificar se UDT não foi registrado:
SELECT * FROM sysobjects WHERE [name] LIKE '@%' AND name NOT IN (SELECT '@'+tablename FROM outb UNION ALL SELECT '@'+logtable FROM outb WHERE logtable is NOT NULL) AND xtype='U'
3) UDF foi definido, mas não registrado no UDT:
SELECT T0.TableID FROM CUFD T0 WHERE left(T0.TableID,1)='@' AND NOT EXISTS (SELECT 1 FROM OUTB T1 WHERE '@'+T1.TableName = T0.TableID or '@'+T1.LogTable = T0.TableID
4) UDF foi definido, mas não existe:
SELECT TableID, AliasID FROM CUFD WHERE NOT EXISTS (SELECT t0.name, t1.name FROM sysobjects t0 INNER JOIN syscolumns t1 ON t0.xtype='U' AND t0.id=t1.id WHERE t0.name=TableID AND t1.name='U_'+AliasID) AND TableID NOT IN ('BTNT', 'OIBT', 'OSRI', 'SRNT')
5) Verifica se UDF tem propriedades definida para UDF não exitente.
UDF valores válidos são definidos para UDF não-existente:
SELECT TableId, FieldID FROM UFD1 T WHERE NOT EXISTS (SELECT 1 FROM CUFD WHERE TableId=T.TableId AND FieldID=T.FieldID)
6) UDF não corresponde ao padrão:
SELECT T1.UDF, T0.nvarchar_size as 'act_size', T1.nvarchar_size as 'def_size' FROM (SELECT T2.name + '.' + T3.name as 'UDF', T3.length/2 as 'nvarchar_size' FROM sysobjects T2 INNER JOIN syscolumns T3 ON T2.id=T3.id WHERE T2.xtype='U' AND T3.xtype IN (SELECT xtype FROM systypes WHERE [name]='nvarchar')) T0
7a) UDF contém espaços extras em TableID campo em campos Usuário na mesma descrição da tabela CUFD:
SELECT * FROM CUFD WHERE datalength(TableID)<>LEN(TableID) AND ascii(SUBSTRING (TableID, LEN(TableID)+1, 1)) =32
7b) UDF contém espaços extras em campo AliasID em campos de usuário na mesma descrição CUFD:
SELECT * FROM CUFD WHERE datalength(AliasID)<>len(AliasID) AND ascii(SUBSTRING (AliasID, LEN(AliasID)+1, 1)) =32
8) UDF existe, mas não está definido:
SELECT T1.name [Table name], T0.name [Column name] FROM sys.columns T0 JOIN sys.objects T1 ON T0.object_id = T1.object_id left JOIN CUFD T2 ON T2.TableID = T1.name AND ('U_' + T2.AliasID) = T0.name WHERE T1.type = 'U' AND T0.name LIKE 'U/_%' escape '/' AND ('U_' + T2.AliasID) is NULL AND (T0.name !='U_NAME' AND T1.name NOT IN ('OUSR', 'AUSR'))
Comentários
Postar um comentário