前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div style="text-align: center">
<table id="TABLE1" border="0" cellpadding="0" cellspacing="0" style="width: 298px; height: 88px; background-color: #a7f1ff;">
<tr>
<td colspan="3" style="height: 24px">
<span style="font-size: 16pt; color: #ff0000"><strong>收缩数据库</strong></span></td>
<td colspan="1" style="height: 24px">
</td>
</tr>
<tr>
<td style="width: 94px">
</td>
<td style="width: 282px">
选择数据库:</td>
<td style="width: 215px; text-align: left;">
<asp:DropDownList ID="ddlDataName" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlDataName_SelectedIndexChanged">
</asp:DropDownList></td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td style="width: 94px; height: 28px">
</td>
<td style="width: 282px; height: 28px;">
当前大小:</td>
<td style="width: 215px; height: 28px; text-align: left;">
<asp:Label ID="labDataSize" runat="server" Text="Label" Visible="False" ForeColor="Maroon"></asp:Label></td>
<td style="width: 100px; height: 28px">
</td>
</tr>
<tr>
<td style="width: 94px">
</td>
<td style="width: 282px">
收缩后大小:</td>
<td style="width: 215px; text-align: left;">
<asp:Label ID="labShrinkSize" runat="server" Text="Label" Visible="False" ForeColor="Red"></asp:Label></td>
<td style="width: 100px">
</td>
</tr>
<tr>
<td colspan="1" style="width: 94px">
</td>
<td colspan="2">
<asp:Button ID="btnShrink" runat="server" OnClick="btnShrink_Click" Text="收缩数据库" /></td>
<td colspan="1">
</td>
</tr>
</table>
</div>
</div>
</form>
</body>
</html>
后台:
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlBind(); //自定义方法绑定下拉列表框
labDataSize.Visible = true; //显示label控件
//显示当前数据库的大小
labDataSize.Text = getSize(ddlDataName.SelectedValue);
}
}
//创建数据库连接
protected SqlConnection createCon()
{
SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["strCon"]);
return con;
}
//自定义方法将所有数据库名称绑定到下拉列表框中
protected void ddlBind()
{
SqlConnection con = createCon(); ;
con.Open(); //打开数据库连接
//sql语句查询所有数据库信息
string str = "exec sp_helpdb";
SqlDataAdapter sda = new SqlDataAdapter(str, con);
DataSet ds = new DataSet();
sda.Fill(ds); //填充数据集
ddlDataName.DataSource = ds.Tables[0].DefaultView;
ddlDataName.DataTextField = "name"; //设置下拉列表显示的文本
ddlDataName.DataBind();
con.Close();
}
//自定义方法返回当前数据库的大小
protected string getSize(string dataName)
{
SqlConnection con = createCon(); ;
con.Open();
//sql语句获取指定数据库的信息
string str = "exec sp_helpdb " + dataName;
SqlCommand com = new SqlCommand(str, con);
SqlDataReader sdr = com.ExecuteReader();
sdr.Read(); //读取一条记录
//获取该数据库的大小
string size = sdr["db_size"].ToString();
sdr.Close();
con.Close();
return size;
}
//执行数据库收缩操作
protected void btnShrink_Click(object sender, EventArgs e)
{
string str = "DBCC SHRINKDATABASE ('" + ddlDataName.SelectedValue + "')";
SqlConnection con = createCon();
con.Open(); //打开数据库连接
SqlCommand com = new SqlCommand(str, con);
try
{
com.ExecuteNonQuery(); //执行sql语句
labShrinkSize.Visible = true; //显示label控件
//显示当前数据库收缩后的大小
labShrinkSize.Text = getSize(ddlDataName.SelectedValue);
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
}
//通过Label控件显示当前数据库的大小
protected void ddlDataName_SelectedIndexChanged(object sender, EventArgs e)
{
labShrinkSize.Visible = false;
labDataSize.Visible = true;
//显示当前数据库的大小
labDataSize.Text = getSize(ddlDataName.SelectedValue);
}
}