Hey all,
I am trying to write a function to drop a specific database no matter the connection status. I have tried
con = new ServerConnection(sql);
con.Connect();
Server srv = new Server(con);
srv.KillDatabase("Name");
,and also tried
Database db= Database (srv, "Name");
Database db=srv.Databases["Name"];
db.Drop();
None of these worked. That surprises me because KillDatabase is supposed to disconnect all activity to the database, at least that's what it says it does.
Thanks.
Hi,
that was worth a Blog entry, there you are :-)
http://www.sqlserver2005.de/SQLServer2005/Default.aspx?tabid=56&EntryID=9
HTH, jens Suessmeyer.
http://www.sqlserver2005.de
|||Thanks!|||Awesome! I was just logging in the forum to ask that very same question. Thanks a lot! :)|||You all most had it all you need is to add the following line and it will work.,Database db= Database (srv, "Name");
con = new ServerConnection(sql);
con.Connect();
Server srv = new Server(con);
Database db=srv.Databases["Name"];
//Add this line
db.DatabaseOptions.UserAccess = DatabaseUserAccess.Restricted;
db.Drop();
|||Update to all, the SMO classes were changed to the following:
collection1.Add(string.Format(SmoApplication.DefaultCulture, "ALTER DATABASE {0} SET SINGLE_USER WITH ROLLBACK IMMEDIATE", new object[] { SqlSmoObject.MakeSqlBraket(database) }));
base.ExecutionManager.ExecuteNonQuery(collection1);
this.Databases[database].Drop();
which is pretty close to my suggestion :-) :
s.Databases["master"].ExecuteNonQuery(string.Format("ALTER DATABASE {0} SET SINGLE_USER with ROLLBACK IMMEDIATE", databaseName)); -Jens.
s.Databases[databaseName].Drop();
No comments:
Post a Comment