DB を分析し、ADODB コマンドまたはレコードセットから実行して各テーブルの結果を MS Excel ワークシートに取得し、"sp_MSforeachtable 'EXECUTE sp_spaceused [?];';"
CopyFromRecordset を使用して結果を Excel に出力したいと考えています。
私が使用しているコードは次のとおりです。
Sub analyseHermesDB()
Dim oConn As Object, oRec As Object, oField As Object, iIndx As Integer
' sp_MSforeachtable 'EXECUTE sp_spaceused [?];';
Set oConn = CreateObject("ADODB.Connection")
Set oRec = CreateObject("ADODB.Recordset")
oConn.Open "FILE NAME=" & ThisWorkbook.Path & "\conn.udl"
With oRec
.activeconnection = oConn
.Source = "sp_MSforeachtable 'EXECUTE sp_spaceused [?];';"
.cursorlocation = 3
.Open
For iIndx = 0 To .fields.Count - 1
ActiveCell.Offset(0, iIndx).Value = .fields(iIndx).Name
Next
Do Until .EOF
ActiveCell.Offset(.absoluteposition, 0).CopyFromRecordset oRec
.movenext
Loop
ActiveCell.Offset(0, 1).Value = .RecordCount
.Close
End With
End Sub
問題は次のとおりです"sp_MSforeachtable 'EXECUTE sp_spaceused [?];';"
。SQL Server 2008 Management Studio で実行すると、テーブルごとに 1 つの結果セットが得られます。
ADO を使用した呼び出しから返されるレコードセットは 1 つだけです
私は何を間違っていますか?レコードセットの配列を取得しようとするかsp_MSforeachtable
、テーブルのリストを取得するために実行してからEXECUTE sp_spaceused [?];'
、それぞれに対して実行する必要がありますか?