0
私はこのクエリが実行されている場所とは異なるデータベースにあるテーブルの行数を取得しようとしています。下の私の例では、という名前のデータベースがあり、そのテーブルにTestTable2
という名前のテーブルがあり、行の数を取得しようとしています。ここでは、データベース内のすべてのテーブルの行数を取得するために働くクエリです:クエリが実行される場所とは異なるデータベースにあるテーブルの行数を取得するにはどうすればよいですか?
SELECT p.[rows] AS [Num_Rows]
, OBJECT_NAME(i.OBJECT_ID) AS [Table_Name]
FROM TestDb.sys.indexes AS i
INNER JOIN TestDb.sys.partitions AS p
ON p.OBJECT_ID = i.OBJECT_ID
AND p.index_id = i.index_id
INNER JOIN TestDb.sys.allocation_units AS a
ON a.container_id = p.partition_id
INNER JOIN TestDb.sys.tables AS t
ON i.OBJECT_ID = t.OBJECT_ID
WHERE i.type <= 1
AND a.type = 1
AND t.type = 'U'
AND t.is_ms_shipped = 0
は、しかし、私はそれだけで私が興味のテーブルを返しますので、where句にフィルタを追加しようとすると、
AND OBJECT_NAME(i.OBJECT_ID) = 'TestTable2'
は、私が最初のクエリからの結果でTestTable2
表を見ることができますが、私はその最後のフィルタを追加するとき、何も返されません:クエリは、もはや任意の結果を返しません。 TestDb
データベースから直接追加したフィルタでこの同じクエリを実行すると、問題なく実行されます。私は何が欠けていますか?
't.name'は私が必要なものであるにもかかわらず、正しくあなたの質問を理解していないことを確認、この
のようなクエリを試すことができます。ありがとうございます! –