私はテーブルのリストにアクセスしたいと思いますし、テーブルごとに行数、使用されているディスクスペースなどをレポートします。これらの詳細をデータベースレベルで取得するとよいでしょう。データベースに関するデータにプログラムでどのようにアクセスしますか?
これをプログラムで行うにはどうすればよいですか?
私はテーブルのリストにアクセスしたいと思いますし、テーブルごとに行数、使用されているディスクスペースなどをレポートします。これらの詳細をデータベースレベルで取得するとよいでしょう。データベースに関するデータにプログラムでどのようにアクセスしますか?
これをプログラムで行うにはどうすればよいですか?
あなただけの接続を開き、データベースを照会することができます
using(var connection = new SqlConnection(connectionString)) {
connection.Open();
using(var command = connection.CreateCommand()) {
command.CommandText = "SELECT * FROM SYS.TABLES";
using(var reader = command.ExecuteReader()) {
while(reader.Read()) {
Console.WriteLine(reader["name"]);
}
}
}
}
あなたはできるGoogleしたいその他の情報のためのクエリ文字列のために。
データベースにSqlConnection
を作成し、接続を開きます。
SqlConnection conn = new SqlConnection("Data Source=Servername;Initial Catalog=Marketing;Integrated Security=SSPI");
conn.Open();
SqlCommand
を作成し、必要なSQLの値にCommandText
を割り当てます。
SqlCommand cmd = new SqlCommand("PLACE SQL HERE", conn);
テーブルと行数:
SELECT
[TableName] = so.name,
[RowCount] = MAX(si.rows)
FROM
sysobjects so,
sysindexes si
WHERE
so.xtype = 'U'
AND
si.id = OBJECT_ID(so.name)
GROUP BY
so.name
ORDER BY
2 DESC
使用スペース:
EXEC sp_spaceused 'tablename'
このスクリプトは、スキーマ名が含まれていませんが、あなたは現在のために必要な情報のほとんどを取得しますデータベース。私はあなたがストアドプロシージャにそれを適応させることができると確信しています。
SET NOCOUNT ON
GO
DECLARE @tblSpaceUsed TABLE
(
[name] sysname NOT NULL,
[rows] int NOT NULL,
[reserved] nvarchar(50) NOT NULL,
[reservedKB] int NULL,
[data] nvarchar(50) NOT NULL,
[dataKB] int NULL,
[index] nvarchar(50) NOT NULL,
[indexKB] int NULL,
[unused] nvarchar(50) NOT NULL,
[unusedKB] int NULL
)
DECLARE @tableName sysname
DECLARE @tableNames CURSOR
SET @tableNames = CURSOR
FAST_FORWARD
FOR
SELECT DISTINCT
ss.name + '.' + st.name
FROM
sys.tables st
INNER JOIN
sys.schemas ss
ON st.schema_id = ss.schema_id
OPEN @tableNames
FETCH NEXT FROM @tableNames INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @tblSpaceUsed ([name], [rows], [reserved], [data], [index], [unused]) EXEC sp_spaceused @tableName
FETCH NEXT FROM @tableNames INTO @tableName
END
CLOSE @tableNames
UPDATE
@tblSpaceUsed
SET
[reservedKB] = CONVERT(int, LEFT([reserved], LEN([reserved]) - 3)),
[dataKB] = CONVERT(int, LEFT([data], LEN([data]) - 3)),
[indexKB] = CONVERT(int, LEFT([index], LEN([index]) - 3)),
[unusedKB] = CONVERT(int, LEFT([unused], LEN([unused]) - 3))
SELECT
*
FROM
@tblSpaceUsed
ジェイソンの答えは上記のとおりですが、より一般的です。あなたはInformation Schemaを見ています。ウィキペディアのエントリー: