能顺利播放的男男网站free_亚洲福利区_日韩欧美成末人一区二区三区_美日韩黄色大片 - 欧美日韩国产一区二区三区在线观看

絕對零度 北京懷舊80S 低調務實 享受創業

Microsoft OLE DB Provider for SQL Server錯誤80040e37解決方法


許多互聯網創業者需要“綜合素質”,SQL中不乏會遇到一些問題,這也是自己曾遇到的問題之一,共享。

問題原因:

把數據庫備份還原到另一個服務器時,可能會產生孤立用戶的問題;

解決辦法:

步驟:1.把備份的數據庫還原到新的數據庫服務器中(

      1.1企業管理器-->1.2數據庫(右鍵)-->1.3所有任務-->1.4還原數據庫-->1.5常規/還原為數據庫/寫上你要的數據庫名字xxxx/選中從設備/選擇設備/添加(瀏覽找到你的數據庫備份文件)/確定/確定/確定-->1.6選項-->1.7將數據庫還原為f:\usr\xxxx.mdf一般存放在你sql安裝的目錄下如:d:\Program Files\Microsoft SQL Server\MSSQL\Data\xxxx.mdf-->1.8確定就ok了!!

     2. 查看你剛剛還原的數據庫中的用戶如:abc;

     3. 查看安全性下面的登陸用戶中是否有:abc如果沒有此時的abc就是一個孤立用戶;

     4.打開查詢分析器運行腳本

       use  數據庫名

       go  

       DECLARE   @sid   BINARY(16)   
       SELECT    @sid=sid FROM sysusers WHERE name='abc' and   islogin=1
       exec      sp_addlogin  @loginame = 'abc',@sid = @sid 

     5.注意,應該是先還原,如果事先在sql的安全性--登錄中已經

      創建abc這個登錄,則先刪除它,再執行上面的語句.同過上面的就能解決問題了!

======================================================================

總結:孤立用戶疑難解答   
  把數據庫備份還原到另一個服務器時,可能會遇到孤立用戶的問題。下面的方案顯示解決了這個問題:    
  通過執行sp_addlogin,把登錄   janetl   改名為   dbo。  
  sp_addlogin  'janetl', 'dbo'      
  備份數據庫。在本例中,備份  Northwind。   
  BACKUP  DATABASE   Northwind   
  TO  DISK = 'c:\mssql\backup\northwnd'      
  除去剛剛備份的數據庫。     
  DROP   DATABASE   Northwind      
  除去登錄。     
  sp_droplogin   'janetl'      
  還原備份的數據庫。     
  RESTORE   DATABASE   Northwind   
  FROM   DISK   =   'c:\mssql\backup\northwnd'      
  janetl  登錄不能訪問  Northwind  數據庫,除非允許 guest   登錄。盡管   janetl   登錄已經刪除,
它仍然(作為一個孤立行)顯示在   sysusers   表中:     
  USE   Northwind   
  SELECT   *   
  FROM   sysusers   
  WHERE   name   =   'janetl'     
  解決孤立用戶問題        
  用   sp_addlogin 添加一個臨時登錄。為孤立用戶指定安全標識符(SID)(從   sysusers)。     
  sp_addlogin @loginame = 'nancyd',@sid   =   0x32C864A70427D211B4DD00104B9E8A00       
  用   sp_dropalias   除去屬于別名   SID   的臨時別名。     
  sp_dropalias   'nancyd'       
  用   sp_dropuser   除去原始用戶(即現在的孤立用戶)。     
  sp_dropuser   'janetl'      
  用   sp_dropuser   除去原始登錄。     
  sp_droplogin   'nancyd'

========================================

--孤立用戶的產生演示       
  --創建一個測試的數據庫   
  CREATE   DATABASE   DB_test   
  go       
  --創建一個登錄   
  EXEC   sp_addlogin   'aa'       
  --設置登錄   aa   的默認數據庫為測試數據庫   DB_test   
  EXEC   sp_defaultdb   'aa','DB_test'   
  go       
  --切換到測試數據庫   
  USE   DB_test   
  go     
  --為登錄   aa   在當前測試數據庫中添加用戶   
  EXEC   sp_grantdbaccess   'aa'   
  go     
  --至此,用戶   aa   登錄后,其默認的當前數據庫就是   DB_test   
  --我們可以在查詢分析器,使用用戶   aa   登錄一下,來驗證我們的測試環境   
    
  --備份測試數據庫,為下面的測試做準備   
  BACKUP   DATABASE   DB_test   TO   DISK='c:\DB_test.bak'   WITH   INIT   
  go       
  /*===================   產生孤立用戶   ======================*/       
  --切換到   master   數據庫   
  USE   master   
  go
    
  --刪除測試數據庫   
  DROP   DATABASE   DB_test   
  go      
  --刪除登錄   aa   
  EXEC   sp_droplogin   'aa'   
  go     
  /*===================   孤立用戶表現形式1   ======================*/     
  --還原測試數據庫   
  RESTORE   DATABASE   DB_test   FROM   DISK='c:\DB_test.bak'   
  go    
  --切換到測試數據庫   
  USE   DB_test   
  go     
  --查看用戶信息   
  select   name   from   sysusers   where   islogin=1     
  --我們會發現,雖然我們已經將登錄   aa   刪除了,但用戶   aa   仍然存在于數據庫中   
  --嘗試一下,用   aa   登錄,被告知登錄失敗   
  go     
  --再把刪除的登錄添加回去   
  EXEC   sp_addlogin   'aa'     
  --設置登錄   aa   的默認數據庫為測試數據庫   DB_test   
  EXEC   sp_defaultdb   'aa','DB_test'     
  --再次登錄,被告知無法打開默認數據庫,登錄失敗   
  go      
  --于是把默認數據庫改為   master   
  EXEC   sp_defaultdb   'aa','master'      
  --這次再登錄,就可以登錄了   
  go     
  --嘗試切換到測試數據庫   DB_test   
  USE   DB_test    
  --得到錯誤信息:   服務器用戶   'aa'   不是數據庫   'DB_test'   中的有效用戶。   
  --看來用戶   aa   與登錄   aa   失去了聯系   
  go      
  --嘗試重新為登錄   aa   添加用戶   aa   
  EXEC   sp_grantdbaccess   'aa'      
  --得到錯誤信息:當前數據庫中已存在用戶或角色   'aa'。    
  --這次我們換個順序,先建立登錄,再恢復數據庫,看能否使登錄與用戶自動建立回聯系       
  --做這個測試之前,先清理測試環境,即做前面的<產生孤立用戶>步驟,然后再開始測試     
  --先添加登錄   
  EXEC   sp_addlogin   'aa'   
  go       
  --還原測試數據庫   
  RESTORE   DATABASE   DB_test   FROM   DISK='c:\DB_test.bak'   
  go       
  --切換到測試數據庫   
  USE   DB_test   
  go      
  --查看用戶信息   
  select   name   from   sysusers   where   islogin=1       
  --我們會發現,用戶   aa   存在于數據庫中   
  --嘗試一下,用   aa   登錄,并切換到   DB_test   
  --結果是登錄成功,訪問   DB_test   出現和測試1一樣的錯誤

 for SQL Server 錯誤 '80040e37'

對象名 'Dv_User' 無效。

/***.asp,行 *

先查看了一下數據庫表,確實有這個表存在,而且程序中調用語句也沒錯.
重寫了一下代碼,結果還是一樣.
懷疑不是程序的問題,于是看其他頁面,發現所有的頁面都有類似的問題,只要有調用到數據庫的地方,都會出現錯誤.

判斷是數據庫出現了問題.數據庫鏈接沒錯.
導入也沒錯.

go了一把,就解決了.

--把所有表的所有者改為DBO就不會了。
--執行下面語句,更改所有表的所有者為DBO
exec sp_msforeachtable "sp_changeobjectowner '?','dbo'"
標簽:
分類:零度共享| 發布:趙克| 查看: | 發表時間:2008/6/3
原創文章如轉載,請注明:轉載自趙克 Blog http://www.gdmybj.com/
本文鏈接:http://www.gdmybj.com/ZHAOKE/340.html

相關文章

◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。

1 #烏魯木齊信息
烏魯木齊信息 這篇文章收藏轉載了 幫我解決一個大問題
http://www.wlmqt.com/ 2012/8/10 14:25:20 【REPLY】
2 #www.wlmqtc.com
www.wlmqtc.com mssql 用起來很麻煩 還不如mysql
http://www.wlmqtc.com/ 2012/8/10 14:29:36 【REPLY】