dönmelidir bir sorgudan veri yok, ama öyle değil: SQL Server: Ben mantıksal olarak bazı verileri dönmelidir SQL Server üzerinde bir SQL sorgusu çalıştırıyorum verileri
SELECT
D.NAME DATABASE_NAME, T.NAME TABLE_NAME, I.NAME INDEX_NAME,
C.NAME COLUMN_NAME
FROM
sys.dm_db_index_physical_stats (NULL, NULL, NULL , NULL, 'LIMITED') AS XXX
INNER JOIN
SYS.DATABASES AS D ON D.DATABASE_ID = XXX.DATABASE_ID
INNER JOIN
SYS.TABLES AS T ON T.OBJECT_ID = XXX.OBJECT_ID
INNER JOIN
SYS.INDEXES AS I ON I.OBJECT_ID = T.OBJECT_ID
INNER JOIN
SYS.INDEX_COLUMNS IC ON IC.OBJECT_ID = I.OBJECT_ID
INNER JOIN
SYS.COLUMNS AS C ON C.OBJECT_ID = IC.OBJECT_ID
WHERE
1=1
ORDER BY
D.NAME, T.NAME
sadece bu biraz çıkışları çok Running verileri:
SELECT *
FROM sys.dm_db_index_physical_stats (NULL, NULL, NULL , NULL, 'LIMITED')
Peki neden daha karmaşık sorgu işe yaramıyor? Doğru şeyleri katılmadan değiliz
:
İşte bir örnek. Ancak, döndürdüğü gerçek veriler kullanışlı görünmüyor: Bence sizin birleşiminiz yanlış. Sorguya bakıldığında, her tablo, tam olarak doğru olmayan birleştirme işleminize göre aynı object_id (sys.databases hariç) kullanır. –
Hangi veritabanını çalıştırdığınızı kontrol edin. Bunu ana veritabanında çalıştırdım ve satır döndürmedi. kendi veritabanımda çalışıyor. BTW, indeks ve sütunlara katılırken, bir tane daha koşul eklemeniz gerekir. IC.index_id = I.index_id – FLICKER
Bunun tam anlamı, SQL sunucusunda olası tüm dizinleri almak ve bunları DB/TB/INDEX ile göstermektir. 'IC.index_id = I.index_id' gibi bir koşul ekleyerek ne demek istediğinizden emin değil misiniz? – robertalks