C#动态创建数据库并只允许特定用户登录该数据库

本文介绍如何使用C#代码在SQL Server中创建数据库、添加用户,并授予用户特定表的操作权限,最后通过该用户进行数据查询。
 protected void Page_Load(object sender, EventArgs e)
    {
        //參考
        //http://tech.cncms.com/shujuku/mssql/96236.html
        //http://bbs.youkuaiyun.com/topics/360120482
    }

    //創建數據庫
    protected void btnCreateDB_Click(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        //連接到master數據庫
        string connString = "Server=QADB;Integrated security=SSPI;database=master";
        sb.AppendLine(" CREATE DATABASE MyDatabase ON PRIMARY ");
        sb.AppendLine(" (NAME=MyDatabase_Data,");
        sb.AppendLine(" FILENAME='F:\\MyDatabaseData.mdf',");
        sb.AppendLine(" SIZE=5MB,MAXSIZE=10MB,FILEGROWTH=10%) ");
        sb.AppendLine(" LOG ON (NAME=MyDatabase_Log,");
        sb.AppendLine(" FILENAME='F:\\MyDatabaseLog.ldf',");
        sb.AppendLine(" SIZE=3MB,MAXSIZE=5MB,FILEGROWTH=10%) ");

        using (SqlConnection conn = new SqlConnection(connString))
        {
            SqlCommand cmd = new SqlCommand(sb.ToString(), conn);
            try{
                conn.Open();
                cmd.ExecuteNonQuery();
            }
            catch(System.Exception ex){
                Response.Write("Failed:"+ex.ToString());
            }
        }
    }

    //新增用戶
    protected void btnAddUser_Click(object sender, EventArgs e)
    {
        //連接到master數據庫
        string connString = "Server=QADB;Integrated security=SSPI;database=master";

        string sql = String.Empty;
        using (SqlConnection conn = new SqlConnection(connString))
        {
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                conn.Open();
                //添加登錄名和密碼
                sql = "exec sp_addlogin 'root','abc@123','MyDataBase'";
                cmd.ExecuteNonQuery();
                //添加權限(默認只有連接的權限)
                sql = "USE MyDataBase exec sp_grantdbaccess 'root'";
                cmd.ExecuteNonQuery();
                //指定登錄名[root]對 Test表有 增刪改查的權限(Test表不是動態創建的,是在db裏面創建的)
                sql = "USE MyDataBase GRANT SELECT , INSERT , UPDATE , DELETE ON Test TO [root]";
                cmd.ExecuteNonQuery();
            }
            catch (System.Exception ex)
            {
                Response.Write("Failed:" + ex.ToString());
            }
        }


    }
    //使用創建的用戶對表進行查詢
    protected void btnTest_Click(object sender, EventArgs e)
    {
        //連接到動態創建的MyDatabase數據庫,并使用root/abc@123帳號登陸
        string strConn = "Persist Security Info=False;User ID=root;PWD=abc@123;Initial Catalog=MyDatabase;Data Source=QADB";

        using (SqlConnection conn = new SqlConnection(strConn))
        {
            //表Test是在MyDatabase數據庫裏面手動創建的
            SqlCommand cmd = new SqlCommand("select COUNT(1) from Test", conn);
            try
            {
                conn.Open();
                int i = (int)cmd.ExecuteScalar();
                Response.Write("Succesfull:" + i);
            }
            catch (System.Exception ex)
            {
                Response.Write("Failed:" + ex.ToString());
            }
        }

    }


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值