一个操作Sql2005数据库的类(备份,还原,分离,附加,添加删除用户等操作)(转载)
/*
* 更新时间 :2011-09-01 16:06
* 更 新 人 :苏飞
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data; namespace Sql2005
{
/// <summary>
/// Sql数据操作帮助类,包括数据的创建,删除,修改密码等一系统列操作
/// </summary>
public abstract class DBT_SqlHelper
{
#region 连接Sql数据部分 /// <summary>
/// 数据库连接字符串
/// </summary>
public static readonly string connectionString = System.Configuration.ConfigurationSettings.AppSettings["con"].ToString().Trim(); #region//ExecteNonQuery方法 /// <summary>
///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
/// 使用参数数组形式提供参数列表
/// </summary>
/// <param name="connectionString">一个有效的数据库连接字符串</param>
/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
public static int ExecteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
//通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
//清空SqlCommand中的参数列表
cmd.Parameters.Clear();
return val;
}
} /// <summary>
///存储过程专用
/// </summary>
/// <param name="cmdText">存储过程的名字</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
public static int ExecteNonQueryProducts(string cmdText, params SqlParameter[] commandParameters)
{
return ExecteNonQuery(DBT_SqlHelper.connectionString, CommandType.StoredProcedure, cmdText, commandParameters);
} /// <summary>
///Sql语句专用
/// </summary>
/// <param name="cmdText">T_Sql语句</param>
/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
public static int ExecteNonQueryText(string cmdText, params SqlParameter[] commandParameters)
{
return ExecteNonQuery(DBT_SqlHelper.connectionString, CommandType.Text, cmdText, commandParameters);
} #endregion /// <summary>
/// 为执行命令准备参数
/// </summary>
/// <param name="cmd">SqlCommand 命令</param>
/// <param name="conn">已经存在的数据库连接</param>
/// <param name="trans">数据库事物处理</param>
/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
/// <param name="cmdText">Command text,T-SQL语句 例如 Select * from Products</param>
/// <param name="cmdParms">返回带参数的命令</param>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{
//判断数据库连接状态
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
//判断是否需要事物处理
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
} #endregion /// <summary>
/// 根据条件创建数据库
/// </summary>
/// <param name="dbName">用于指定数据文件的逻辑名称</param>
/// <param name="dbFileName">指定数据文件的操作系统文件名。其后面的参数是创建数据文件时定义的物理文件的路径名和文件名</param>
/// <param name="dbSize">指定数据文件的大小</param>
/// <param name="dbMaxSize">指定数据文件可以增长到的最大大小</param>
/// <param name="dbFileGrowth">
/// 指定数据文件的增长增量,其值不能超过maxsize设置。0表示不增长。,默认值为MB。如果指定为%,
/// 则增量大小为发生时文件大小的指定百分比,如果没有指定,默认值为10%。
/// </param>
/// <param name="logName">用于指定数据日志的逻辑名称</param>
/// <param name="logFileName">指定数据日志的操作系统文件名。其后面的参数是创建数据日志时定义的物理文件的路径名和文件名</param>
/// <param name="logSize">指定数据日志的大小</param>
/// <param name="logMaxSize">指定数据日志可以增长到的最大大小</param>
/// <param name="logFileGrowth">
/// 指定数据日志的增长增量,其值不能超过maxsize设置。0表示不增长。,默认值为MB。如果指定为%,
/// 则增量大小为发生时文件大小的指定百分比,如果没有指定,默认值为10%。
/// </param>
/// <param name="isDeletedb">在创建数据库是否删除同名的现存数据库</param>
public static void CreateDatabase(string dbName, string dbFileName, string dbSize, string dbMaxSize, string dbFileGrowth,
string logName, string logFileName, string logSize, string logMaxSize, string logFileGrowth, Boolean isDeletedb)
{
#region 检查是否存在数据dbName StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE master ");
dbSql.Append(" GO");
if (isDeletedb)
{
dbSql.Append("IF EXISTS(SELECT * FROM sysdatabases WHERE name ='@dbName')begin DROP DATABASE @dbName end");
}
#endregion #region 创建数据库 //开始创建数据并指定名称
dbSql.Append("CREATE DATABASE @dbName ON PRIMARY (");
//数据库名
dbSql.Append("NAME='@ dbName" + "_data',");
//数据路经
dbSql.Append("FILENAME='@dbFileName', ");
//大小
dbSql.Append("SIZE=@dbSize, ");
//最大值
dbSql.Append("MAXSIZE= @dbMaxSize,");
//增长值
dbSql.Append("FILEGROWTH=@dbFileGrowth)"); #endregion #region 创建数据库日志 //开始创建日志文件
dbSql.Append("LOG ON (");
//日志文件名
dbSql.Append("NAME='@logName" + "_log',");
//日志文件路经
dbSql.Append("FILENAME='@logFileName',");
//大小
dbSql.Append("SIZE=@logSize,");
//最大值
dbSql.Append("MAXSIZE=@logMaxSize,");
//增加值
dbSql.Append("FILEGROWTH=@logFileGrowth ) GO"); #endregion #region 开始执行创建命令 //设置参数列表
SqlParameter[] parameter =
{
new SqlParameter("@dbName", dbName),
new SqlParameter("@dbFileName", dbFileName),
new SqlParameter("@dbSize", dbSize),
new SqlParameter("@dbMaxSize", dbMaxSize),
new SqlParameter("@dbFileGrowth", dbFileGrowth),
new SqlParameter("@logName", logName),
new SqlParameter("@logFileName", logFileName),
new SqlParameter("@logSize", logSize),
new SqlParameter("@logMaxSize", logMaxSize),
new SqlParameter("@logFileGrowth", logFileGrowth)
}; DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null); #endregion
} /// <summary>
/// 删除指定名称的数据库文件以及日志文件
/// </summary>
/// <param name="dbName">数据库名称</param>
public static void DropDatabase(string dbName)
{
#region 构造Sql代码 StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE master ");
dbSql.Append(" GO ");
dbSql.Append("DROP DATABASE @dbName"); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter = { new SqlParameter("@dbName", dbName) };
DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), parameter); #endregion
} /// <summary>
/// 备份数据库
/// </summary>
/// <param name="dbName">数据库文件名</param>
/// <param name="dbFileName">路经包括盘符和文件名以及扩展名称一般为“_dat”</param>
public static void BackupDatabase(string dbName, string dbFileName)
{
#region 构造Sql代码 StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE master ");
dbSql.Append(" GO ");
dbSql.Append("BACKUP DATABASE @dbName TO DISK ='@dbFileName'"); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter =
{
new SqlParameter("@dbName", dbName),
new SqlParameter("@dbFileName", dbFileName)
}; DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), parameter); #endregion
} /// <summary>
/// 恢复数据库
/// </summary>
/// <param name="dbName">数据库名</param>
/// <param name="dbFileName">路经包括盘符和文件名以及扩展名称一般为“_dat”</param>
public static void RestoreDatabase(string dbName, string dbFileName)
{
#region 构造Sql代码 StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE master ");
dbSql.Append(" GO ");
dbSql.Append("restore database @dbName from disk='@dbFileName' WITH REPLACE,RECOVERY"); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter =
{
new SqlParameter("@dbName", dbName),
new SqlParameter("@dbFileName", dbFileName)
};
DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null); #endregion
} /// <summary>
/// 附加数据库文件
/// </summary>
/// <param name="newDbName">附加时的新名称可以是原名,也可以得新取一个新名称</param>
/// <param name="dbFileName">数据文件的路径包括盘符和文件名以及扩展名</param>
/// <param name="logFileName">日志文件的路径包括盘符和文件名以及扩展名</param>
public static void OnlineDatabase(string newDbName, string dbFileName, string logFileName)
{
#region 构造Sql代码 StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE master ");
dbSql.Append(" GO ");
dbSql.Append("EXEC sp_attach_db @ newDbName,'@dbFileName','@logFileName'"); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter =
{
new SqlParameter("@dbFileName", dbFileName),
new SqlParameter("@logFileName", logFileName)
};
DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null); #endregion
} /// <summary>
/// 分离数据库文件
/// </summary>
/// <param name="dbName">数据库名称</param>
public static void OfflineDatabase(string dbName)
{
#region 构造Sql代码 StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE master ");
dbSql.Append(" GO ");
dbSql.Append(" exec sp_detach_db '@dbName' "); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter = { new SqlParameter("@dbName", dbName) };
DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null); #endregion
} /// <summary>
/// 重新设置用户的密码
/// </summary>
/// <param name="newPassword">新密码</param>
/// <param name="userName">登录用户名</param>
public static void ResetPassword(string newPassword, string userName)
{
#region 构造Sql代码 StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE master ");
dbSql.Append(" GO ");
dbSql.Append("EXEC sp_password null,'@newPassword','@userName'"); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter =
{
new SqlParameter("@newPassword", newPassword),
new SqlParameter("@userName", userName)
};
DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null); #endregion
} /// <summary>
/// 分离数据库文件
/// </summary>
/// <param name="dbName">数据库名称</param>
/// <param name="newPassword">新密码</param>
/// <param name="userName">登录用户名</param>
public static void CreateDbUser(string dbName, string userName, string passWord)
{
#region 构造Sql代码 StringBuilder dbSql = new StringBuilder();
//设置当前数据库
dbSql.Append("USE " + dbName);
dbSql.Append(" GO ");
dbSql.Append("EXEC sp_addlogin N'@userName','@passWord'");
dbSql.Append("EXEC sp_grantdbaccess N'@userName'"); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter =
{
new SqlParameter("@dbName",userName),
new SqlParameter("@userName", userName),
new SqlParameter("@passWord", passWord)
};
DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null); #endregion
} /// <summary>
/// 给指定数据的指定用户授于本数据库的所有操作权限
/// </summary>
/// <param name="dbName">数据库名称</param>
/// <param name="userName">用户名称</param>
public static void AddRoleToDbUser(string dbName, string userName)
{
#region 构造代码 StringBuilder dbSql = new StringBuilder(); //设置当前数据库
dbSql.Append("USE " + dbName);
dbSql.Append("GO ");
dbSql.Append("EXEC sp_addrolemember N'@dbName', N'@userName'"); #endregion #region 开始执行命令 //设置参数列表
SqlParameter[] parameter =
{
new SqlParameter("@dbName",userName),
new SqlParameter("@userName", userName)
};
DBT_SqlHelper.ExecteNonQueryText(dbSql.ToString().Trim(), null); #endregion
}
}
}
一个操作Sql2005数据库的类(备份,还原,分离,附加,添加删除用户等操作)(转载)的更多相关文章
- centos的用户、组权限、添加删除用户等操作的详细操作命令
1.Linux操作系统是多用户多任务操作系统,包括用户账户和组账户两种 细分用户账户(普通用户账户,超级用户账户)除了用户账户以为还 有组账户所谓组账户就是用户账户的集合,centos组中有两种类型, ...
- SQL 数据库 学习 005 学习必备的一些操作 --- 如何新建数据库 如何附加和分离数据库(如何备份还原数据库) 如何删除数据库
我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识.比如:如何新建一个数据库 ...
- C#通过Ado.net对连接数据库并进行添加删除等常规操作的代码
如下资料是关于C#通过Ado.net对连接数据库并进行添加删除等常规操作的内容. static string sqlcon = "server=.;database=;Integrated ...
- Sql server 备份还原后出现“受限制用户”问题
http://jingyan.baidu.com/article/eb9f7b6dcbf1ea869264e856.html SQL数据库作备份和还原操作几乎是日常性事务了.但某次在对Sql Serv ...
- Sql server 备份还原后出现“受限制用户”问题
SQL数据库作备份和还原操作几乎是日常性事务了.但某次在对Sql Server 2005 数据库做备份还原后经常出现数据库“受限制用户”的问题 工具/原料 Windows OS SQL DB 步骤/方 ...
- MySQL数据库表的数据插入、修改、删除、查询操作及实例应用
一.MySQL数据库表的数据插入.修改.删除和查询 CREATE DATABASE db0504; USE db0504; CREATE TABLE student ( sno ) NOT NULL ...
- Mariadb数据库设置及操作 一主多从 备份还原(实测笔记)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 数据库版本信息 : 10.1.20- ...
- 利用shell脚本自动化备份数据库与手动备份还原数据库操作
1.在linux操作系统上手动备份数据库 mysqldump -h 服务器IP地址 -u root -p数据库密码 --databases 所要备份的数据库名称 > /路径/数据库.sql(自定 ...
- Oracle数据库表的备份和数据表的删除操作
--Oracle数据库中的表备份: --备份语句:在备份之后就可以将这张表的所有数据源删除了,但是之后有人对这张表的数据进行操作,但是在操作完成之后要记得将数据表恢复 CREATE TABLE DZH ...
随机推荐
- ctagst简单应用,将Vim改造:Ctags,Taglist,Cscope,OmniCppComplete,SuperTab,Winmanager,NERDTree,MiniBufExplorer,vimrc
vim + ctags $ ctags #给同一个目录下的所有文件建立tags 这时在tags文件所在的目录下打开源文件阅读,vim就会自动调用tags文件.如果tags文件不在当前目录下,能在命令模 ...
- Javascript水平提升
1,学习js分几个阶段,没入门,入门初学者,中级水平,高级水平,ppt水平. 2,没入门的如何学习? 我当初是先学jquery,有css和html基础,有css基础看jq的语法很简单,就是选择符,jq ...
- bzoj3875
悲伤地回忆,当初写了一个作死的算法爆零了为什么不好好写暴力呢……显然设w[i]表示彻底干掉这个怪物的代价注意发现这里的转移具有后效性,但是干掉每个怪物的最优值是一定的我们用spfa来转移,详见那篇sp ...
- bzoj2209 2329
括号序列的经典做法把(看成1,)看成-1匹配的括号序列即任意前缀和都非负我们先解决静态的问题,给定一段括号序列求最少修改次数我们先找出最大后缀和a和最小前缀和b之间一定可以不相交显然a+|b|个括号是 ...
- 外部exe窗体嵌入winform
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))
本章博客讲解: 1.Cookie基本用法演示 2.演示Cookie的访问权限 3.演示Cookie的删除 4.利用Cookie显示用户上次登录的时间 5.利用Cookie技术显示用户最近浏览的若干个图 ...
- JavaScript高级程序设计35.pdf
遍历 “DOM2级遍历和范围”模块定义了两个用于辅助完成顺序遍历DOM结构的类型:NodeIterator和TreeWalker,两个类型能够基于给定的起点对DOM结构执行深度优先(depth-fir ...
- Poj 2299 - Ultra-QuickSort 离散化,树状数组,逆序对
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 52306 Accepted: 19194 ...
- HW4.20
public class Solution { public static void main(String[] args) { boolean isPrime = true; int count = ...
- 微信、QQ这类IM App怎么做——谈谈Websocket
前言 关于我和WebSocket的缘:我从大二在计算机网络课上听老师讲过之后,第一次使用就到了毕业之后的第一份工作.直到最近换了工作,到了一家是含有IM社交聊天功能的app的时候,我觉得我现在可以谈谈 ...