使用T-SQL语句备份数据库的问题
我使用
bacuup database db_name to disk= 'd:\1.bak ' with init
备份等到后在还原,里面没有用户,怎么回事情,还要自己在重新添加用户
使用
restore database db_name form disk= 'd:\1.bak ' with replace
提示数据库正在使用,无法排他服务,请问,要使用sql语句还原备份改怎么搞呢,我这个用户权限很小,连使用master的存储过程的权限都没有,更加不要说把数据库分离或重新建立表了
------解决方案--------------------备份没有错,但是备份到指定文件中,好像还原就会出现用户登录名丢失的问题。
建议使用备份集模式。如果不是的话,每次还原后,都先移除用户,再添加回去。
还原时,如果有其他程序(包括你自己的还原的程序)连到了那个数据库,就都不能还原。你自己那个程序,需要连接到master数据库,才能操作还原指定数据库操作
USE master
-- 创建备份集,这个操作你只需要做一次,可以在程序以外先完成
EXEC sp_addumpdevice 'disk ', 'MyNwind_2 ', 'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_2.dat '
--Create the log backup device.
USE master
EXEC sp_addumpdevice 'disk ', 'MyNwindLog1 ',
'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwindLog1.dat '
-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_2
-- Update activity has occurred since the full database backup.
-- Back up the log of the MyNwind database.
BACKUP LOG MyNwind
TO MyNwindLog1
------解决方案-------------------- <% @Import Namespace= "System.Data " %>
<% @Import Namespace= "System.Data.SqlClient " %>
<HTML>
<HEAD>
<title> 获取服务器端数据库列表示例 </title>
<script language= "C# " runat= "server ">
// 注意本节的数据库连接字符串
string ConnStr = System.Configuration.ConfigurationSettings.AppSettings[ "ConnectionSqlServer1 "];
void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
// 创建连接及执行数据库操作
string db_query = "sp_helpdb ";
SqlCommand myCommand = new SqlCommand(db_query, new SqlConnection(ConnStr));
myCommand.Connection.Open();
SqlDataReader dr = myCommand.ExecuteReader();
// 将数据库列表绑定到下拉列表控件(DropDownList)
dbDropDownList.DataSource = dr;
dbDropDownList.DataTextField = "name ";
dbDropDownList.DataBind();
//关闭DataReader对象和数据库连接
dr.Close();
myCommand.Connection.Close();
}
}
void dbDropDownList_SelectedIndexChanged(object sender, System.EventArgs e)
{
pathTextBox.Text = @ "C:\BACKUP\ " + dbDropDownList.SelectedValue + ".bak ";
}
void backupButton_Click(object sender, System.EventArgs e)
{
string path = pathTextBox.Text;
string dbname = dbDropDownList.SelectedValue;
string backupSql = "use master; ";
backupSql += "backup database @dbname to disk = @path; ";
SqlCommand myCommand = new SqlCommand(backupSql, new SqlConnection(ConnStr));
myCommand.Parameters.Add( "@dbname ", SqlDbType.Char);
myCommand.Parameters[ "@dbname "].Value = dbname;
myCommand.Parameters.Add( "@path ", SqlDbType.Char);
myCommand.Parameters[ "@path "].Value = path;
try
{
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
infoLabel.Text = "备份成功 ";
}
catch(Exception ex)
{
infoLabel.Text = "备份失败 <br> " + ex.ToString();
}
finally