关于"无法删除数据库 'xxx',因为该数据库当前正在使用"

以前的数据库装在虚拟机里,今天在本机上装了一个SQL2008,远程连接到虚拟机里的SQLSERVER上以后,用drop database test删除以前的测试数据库失败,提示“无法删除数据库 'test',因为该数据库当前正在使用”。当时虚拟机刚开,实在弄不懂为什么会提示说正在使用中。如果重启,太不甘心,上网找了一下,发现只需要几步就可以完美解决:

以下为相关代码

  1. use master  
  2. go  
  3.  
  4. sp_who  
  5.  
  6. kill 53  
  7.  
  8. drop database test 

sp_who当前用户、会话和进程的信息

找到连接到test数据库的会话的spid,然后kill xxx,就可以干掉此会话。

现在再用drop database test就可以成功删除啦。

 另外,跟大家分享一个今天刚看到的比较有趣的SQL函数soundex(),在《SQL必知必会》上了解到的。此函数可以将任何字符串转换为描述其语音表示的字母和数字,通俗点讲,就是可以根据此函数查找与指定文本串读音相似的数据,而且这个函数被大部分DBMS支持(Access和PostgreSQL例外)。

例如要找customers表中cust_contact列值为Miachale Green的记录,但如果录入数据时写为了Michelle Green,用正常的where语句找不到时,可以用如下语句:

 

  1. select cust_name,cust_contact from customers   
  2. where Soundex(cust_contact)=soundex('Miachale Green')  

这样Michelle Green就如愿的被搜索出来了。

更加神奇的是对中文的支持,比方说要找的姓名为“李明乐”,我们找“李名乐”,“李鸣了”都可以找出正确记录。废话不说,大家轻拍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章