把一个现存的SQL Server数据库文件A.mdf复制为B.mdf。如果没有对B.mdf建立数据连接(dbconnection)及进行open操作,可以用System.IO.File.Delete将B.mdf删除。但是建立数据连接(dbconnection)及dbconnection.open后,即使关闭了数据连接(dbconnection.close)后,也无法将B.mdf删除。提示的错误为The process cannot access the file,because it is being used by anther process 如果正确地删除已打开的数据库文件?
可以使用drop database语句由数据库自动删除。
可以使用drop database语句由数据库自动删除。
SqlConnection conn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=tempdb;Persist Security Info=True;User ID=sa;Password=sa");
conn.Open();
SqlCommand cmd = new SqlCommand("drop database N1", conn);
cmd.ExecuteNonQuery();
上面的代码删除了数据库N1,包括从物理上删除 mdf和ldf文件。
注意上面的连接字符串不能指定为N1,如果是这样的话会由于数据库正在连接中将无法删除。
答:是的。数据库是并发的,可以同时支持多个数据库连接。
楼上说的drop database语句能否详细点?
答:drop database N1
连接字为"Data Source=.\\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True;AttachDbFilename=X:\\...\\B.mdf";
和你给出的方式不太一样。那"drop database N1"中的N1应该写什么呢,就是数据库名吗B.mdf?
"上面的连接字符串不能指定为N1"那我该写成什么呢?
连接字为"Data Source=.\\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True;AttachDbFilename=X:\\...\\B.mdf";
和你给出的方式不太一样。那"drop database N1"中的N1应该写什么呢,就是数据库名吗B.mdf?
"上面的连接字符串不能指定为N1"那我该写成什么呢?
drop database + 数据库名,你放在查询分析器中运行一下就明白了
eg: drop database NorthWind