title image


Smiley Wenn ich den Befehl...
INDEX_COL(...) richtig verstanden habe, liefert er mir immer nur eine Indexspalte. So habe ich mir untenstehendes Statement zusammengebaut.

Für eine zeilenweise Ausgabe müßte ich entweder T-SQL bemühen oder vielleicht auch die sysindexes-Tabelle 16mal verknüpfen. Ansonsten bekomme ich das nicht hin....



Oder sehe ich da was falsch?

Das SQL rufe ich per Batch-Script mit der OSQL.EXE auf und schiebe das Ganze in ein File. Der Inhalt sieht genauso aus wie im Query-Analyzer.





SELECT SUBSTRING(so.name,1,25) AS TABLE_NAME, SUBSTRING(si.name,1,25) as Index_name,

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,1 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,2 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,3 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,4 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,5 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,6 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,7 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,8 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,9 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,10 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,11 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,12 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,13 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,14 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,15 ),''),1,25) +','+

SUBSTRING(ISNULL(INDEX_COL(so.name,si.indid,16 ),''),1,25) AS COLUMN_NAMES

FROM sysindexes si, sysobjects so

WHERE so.id = si.id

AND si.indid > 0

AND si.indid < 255

AND (si.status & 64)=0

AND SUBSTRING (si.name,1,1) '_'

order by so.name, si.indid



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: