Ant*_*y D 4 c# sql-server backup single-user
我有以下功能:
public void RestoreDatabase(String databaseName, String backUpFile,
String serverName, String userName, String password)
{
SqlConnection.ClearAllPools();
ServerConnection connection = new ServerConnection
(serverName, userName, password);
Server sqlServer = new Server(connection);
Restore rstDatabase = new Restore();
rstDatabase.Action = RestoreActionType.Database;
rstDatabase.Database = databaseName;
BackupDeviceItem bkpDevice = new BackupDeviceItem
(backUpFile, DeviceType.File);
rstDatabase.Devices.Add(bkpDevice);
rstDatabase.ReplaceDatabase = true;
rstDatabase.SqlRestore(sqlServer);
}
Run Code Online (Sandbox Code Playgroud)
在恢复备份之前,我首先尝试将数据库设置为单用户模式.我试过这段代码:
private string singleUserCmd = "alter database db-name set SINGLE_USER";
private string multiUserCmd = "alter database db-name set MULTI_USER";
private void SetSingleUser(bool singleUser,
SqlConnectionStringBuilder csb)
{
string v;
if (singleUser)
{
v = singleUserCmd.Replace("db-name", csb.InitialCatalog);
}
else
{
v = multiUserCmd.Replace("db-name", csb.InitialCatalog);
}
SqlCommand cmd = new SqlCommand(v, new SqlConnection
(csb.ToString()));
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
finally
{
cmd.Connection.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
问题似乎是单一用户模式用于该连接,阻止其他任何人做任何事情.我需要它来恢复备份的连接.
恢复需要在将数据库置于单用户模式的连接上进行,因此为什么不让您的SetSingleUser函数返回它执行的打开的SqlConnection,然后让您的Restore代码接收并使用相同的打开连接.
private string singleUserCmd = "alter database db-name set SINGLE_USER";
private string multiUserCmd = "alter database db-name set MULTI_USER";
private SqlConnection SetSingleUser(bool singleUser, SqlConnectionStringBuilder csb)
{
string v;
if (singleUser)
{
v = singleUserCmd.Replace("db-name", csb.InitialCatalog);
}
else
{
v = multiUserCmd.Replace("db-name", csb.InitialCatalog);
}
SqlConnection connection = new SqlConnection(csb.ToString());
SqlCommand cmd = new SqlCommand(v, connection);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
return connection;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3793 次 |
| 最近记录: |