sac*_*rni 74 c# sql-server asp.net
我想删除一个数据库.我使用了以下代码,但无济于事.
public void DropDataBase(string DBName,SqlConnection scon)
{
try
{
SqlConnection.ClearAllPools();
SqlCommand cmd = new SqlCommand("ALTER DATABASE " + DBName + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE", scon);
cmd.CommandType = CommandType.Text;
scon.Open();
cmd.ExecuteNonQuery();
scon.Close();
SqlCommand cmddrpdb = new SqlCommand("drop database " + DBName + "", scon);
cmddrpdb.CommandType = CommandType.Text;
scon.Open();
cmddrpdb.ExecuteNonQuery();
scon.Close();
}
catch (Exception ex)
{
MessageBox.Show("DropDataBase : " +ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误,因为它无法删除数据库,因为它当前正在使用中.请帮助我解决上述问题.
unr*_*boy 94
在删除数据库之前,首先删除与该数据库的连接.
我在http://www.kodyaz.com/articles/kill-all-processes-of-a-database.aspx找到了解决方案
DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'YOUR_DABASE_NAME'
DECLARE @SQL varchar(max)
SELECT @SQL = COALESCE(@SQL,'') + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
--SELECT @SQL
EXEC(@SQL)
Run Code Online (Sandbox Code Playgroud)
Gre*_*zik 44
有人连接到数据库.尝试切换到另一个数据库,然后,删除它:
尝试
SP_WHO 看谁有联系
并且KILL如果需要的话
Ace*_*red 35
对于SQL server mgmt.工作室:
右键单击数据库:属性 - >选项 - >限制访问:设置为"单用户",然后执行删除
小智 31
现在为时已晚,但对未来的用户可能会有所帮助.
在删除数据库查询之前,您可以使用以下查询:
alter database [MyDatbase] set single_user with rollback immediate
drop database [MyDatabase]
Run Code Online (Sandbox Code Playgroud)
它会工作.你也可以参考
我希望它能帮到你:)
Raz*_*aza 13
select * from sys.sysprocesses where dbid = DB_ID('Test')
Run Code Online (Sandbox Code Playgroud)
(将'Test'替换为您要删除的数据库的名称)这将告诉您哪些进程正在使用它.
如果你还想强制下降那么,最终的方法是:
USE master;
GO
ALTER DATABASE Test
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE Test;
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 !
如果您在 SQL Management Studio 中删除数据库并收到消息,请不要忘记您使用 Master 作为选定的数据库,否则您的查询也是到数据库的连接。
USE Master;
GO
DROP DATABASE AdventureWorks;
GO
Run Code Online (Sandbox Code Playgroud)
小智 8
首先使您的数据库脱机,然后将其分离,例如
Use Master
GO
ALTER DATABASE dbname SET OFFLINE
GO
EXEC sp_detach_db 'dbname', 'true'
Run Code Online (Sandbox Code Playgroud)
小智 5
首先检查连接的数据库
SP_WHO
Run Code Online (Sandbox Code Playgroud)
第二次断开您的数据库
DECLARE @DatabaseName nvarchar(50)
SET @DatabaseName = N'your_database_name'
DECLARE @SQL varchar(max)
SELECT @SQL = COALESCE(@SQL,'') + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@DatabaseName) AND SPId <> @@SPId
--SELECT @SQL
EXEC(@SQL)
Run Code Online (Sandbox Code Playgroud)
最后放下它
drop database your_database
Run Code Online (Sandbox Code Playgroud)
小智 5
例如
My Data Base Name Is Test1
ALTER DATABASE Test1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE master
GO
DROP DATABASE Test1
Run Code Online (Sandbox Code Playgroud)