有没有办法在C#中将数据库设置为单用户模式?

时间:2009-10-05 17:20:16

标签: c# wpf database entity-framework

我有一个WPF应用程序,它可以从代码内实体模型中更新我的数据库。可能存在这样的情况:当用户连接时它会更新数据库,并且我希望将其置于单用户模式以避免错误。

我还想避免使用sql。我知道我可以使用:

运行sql
DataContext.ExecuteCommand("ALTER DATABASE...") 

我宁愿在C#库中使用命令来执行此操作,但我不知道在哪里查看。

有没有办法在不使用SQL的情况下将数据库设置为SUM?

2 个答案:

答案 0 :(得分:3)

所以我使用了这样的SMO服务器对象:

Server server = GetServer();
         if (server != null)
        {
            Database db = server.Databases[Settings.Instance.GetSetting("Database", "MyDB")];
            if (db != null)
            {
                server.KillAllProcesses(db.Name);
                db.DatabaseOptions.UserAccess = DatabaseUserAccess.Single;
                db.Alter(TerminationClause.RollbackTransactionsImmediately);

问题是,这打开了一个与我的datacontext不同的连接,从而自行关闭并且不让我访问数据库。最后,我不得不恢复使用SQL。

答案 1 :(得分:0)

您可以使用SQLDMO来管理SQL Server对象。

http://msdn.microsoft.com/en-us/library/ms162169.aspx