關於"無法刪除數據庫 '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就如願的被搜索出來了。

更加神奇的是對中文的支持,比方說要找的姓名爲“李明樂”,我們找“李名樂”,“李鳴了”都可以找出正確記錄。廢話不說,大家輕拍。

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