首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C#和SMO杀死与Server数据库的所有连接?

如何使用C#和SMO杀死与Server数据库的所有连接?
EN

Stack Overflow用户
提问于 2015-04-06 12:55:28
回答 2查看 5K关注 0票数 5

我正在尝试使用.BAK和SMO从C#文件中恢复数据库。这是我的密码。

代码语言:javascript
复制
public static void RestoreDatabase()
{
    string dbConnString = Configuration.DatabaseConnectionString;
    ServerConnection connection = new ServerConnection(@"dbserver\sqlexpress", "user", "password");
    Server smoServer = new Server(connection);

    Restore rstDatabase = new Restore();
    rstDatabase.Action = RestoreActionType.Database;
    rstDatabase.Database = "AppDb";

    BackupDeviceItem bkpDevice = new BackupDeviceItem(@"TestData\db-backup.bak", DeviceType.File);
    rstDatabase.Devices.Add(bkpDevice);
    rstDatabase.ReplaceDatabase = true;

    // Kill all processes
    smoServer.KillAllProcesses(rstDatabase.Database);

    // Set single-user mode
    Database db = smoServer.Databases[rstDatabase.Database];
    db.DatabaseOptions.UserAccess = DatabaseUserAccess.Single;
    db.Alter(TerminationClause.RollbackTransactionsImmediately);

    rstDatabase.SqlRestore(smoServer);
}

然而,当我试图运行此方法时,当它试图杀死所有进程时,我会得到以下(错误)消息:

不能使用“杀死”来杀死您自己的进程。

如果有人能帮助解决这个问题,我将非常感激。

EN

回答 2

Stack Overflow用户

发布于 2015-04-06 13:58:55

只是不打电话给KillAllProcessesRollbackTransactionsImmediately就够了。它会立即杀死数据库中的所有会话。

无论如何,KillAllProcesses并不能帮助您,因为在它完成之后,就会出现一个新的会话。

票数 7
EN

Stack Overflow用户

发布于 2015-04-06 13:04:53

在我尝试还原数据库时,这一直发生在我身上,而且在某个地方有一个活动连接,直到数据库没有更多的活动连接时,数据库才会恢复。

通常我所做的是执行以下命令来断开每个人的连接,然后恢复数据库。

代码语言:javascript
复制
ALTER DATABASE [DatabaseName]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

-- at this point all the users will be disconnected and the database is in 
-- single-user mode

Use [DatabaseName]  --<-- Grab that single connection 
GO

Use [master]        --<-- Disconnect from database and connect to Master DB for restore
GO

RESTORE DATABASE [DatabaseName]  --<-- Finally restore database tara
 FROM DISK .........  
GO
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29471748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档