隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827295
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

          孤立用戶和對象名無效問題的解決方法

          A. 顯示登錄映射的當(dāng)前用戶的報告

          以下示例生成當(dāng)前數(shù)據(jù)庫中未鏈接到任何登錄名的用戶及其安全標(biāo)識符 (SID) 的報告。

          EXEC sp_change_users_login 'Report';

          B. 將數(shù)據(jù)庫用戶映射到新的 SQL Server 登錄名

          在以下示例中,數(shù)據(jù)庫用戶與新的 SQL Server 登錄名關(guān)聯(lián)。數(shù)據(jù)庫用戶 MB-Sales 首先映射到另一個登錄名,然后重新映射到登錄名 MaryB

          --Create the new login.
          CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
          GO
          --Map database user MB-Sales to login MaryB.
          USE AdventureWorks;
          GO
          EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
          GO

          C. 自動將用戶映射到登錄名(必要時新建一個登錄名)

          以下示例顯示如何使用 Auto_Fix 將現(xiàn)有用戶映射到同名的登錄名,以及如何在不存在登錄名 Mary 的情況下,創(chuàng)建密碼為 B3r12-3x$098f6 的 SQL Server 登錄名 Mary

          USE AdventureWorks;
          GO
          EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
          GO
          ------------結(jié)束--------------------

          一、孤立帳戶,就是某個數(shù)據(jù)庫的帳戶只有用戶名而沒有登錄名,這樣的用戶在用戶庫的sysusers系統(tǒng)表中存在,而在master數(shù)據(jù)庫的syslogins中卻沒有對應(yīng)的記錄。

          孤立帳戶的產(chǎn)生一般是以下兩種:
          1.將備份的數(shù)據(jù)庫在其它機器上還原;
          2.重裝系統(tǒng)或SQL SERVER之后只還原了用戶庫

          解決方法是使用sp_change_users_login來修復(fù)。

          sp_change_users_login的用法有三種

          用法1:
          exec sp_change_users_login 'REPORT'
          列出當(dāng)前數(shù)據(jù)庫的孤立用戶

          用法2:
          exec sp_change_users_login 'AUTO_FIX','用戶名'
          可以自動將用戶名所對應(yīng)的同名登錄添加到syslogins中
          如果沒有建立testuser的登錄用戶,還可以用 
          sp_change_users_login 'Auto_Fix', 'testuser', NULL, 'testpass'

          用法3:
          exec sp_change_users_login 'UPDATE_ONE','用戶名','登錄名'
          將用戶名映射為指定的登錄名。

          二、對象名'xxxx’無效的問題

          這里可能會有人遇到對象名 ‘xxxx’無效的問題。系統(tǒng)表卻不會產(chǎn)生這個問題,而用戶表還要加上用戶名,然后是表明才能訪問,比如select * from author,會說對象名 author 無效,而用select * from test.author就可以訪問,這個是用戶首選身份的問題。

          解決很簡單,就是察看test登錄用戶是否具有dba的權(quán)限或者系統(tǒng)管理的權(quán)限,有的話去掉就行了。

          因為如果用戶有dba身份,那么它登陸后的默認表空間是dbo的系統(tǒng)表空間,所以去掉了之后,就會以正常的test表空間訪問數(shù)據(jù)表了



          posted on 2012-07-08 12:13 Ke 閱讀(1146) 評論(0)  編輯  收藏 所屬分類: sql server
          主站蜘蛛池模板: 浦城县| 金溪县| 普宁市| 达拉特旗| 定结县| 腾冲县| 门源| 巴林左旗| 锦州市| 邻水| 邯郸市| 综艺| 泰兴市| 嘉祥县| 衡阳县| 拜城县| 常州市| 界首市| 福建省| 邵武市| 台东县| 塔城市| 乐至县| 金华市| 城步| 牟定县| 醴陵市| 太谷县| 茂名市| 永清县| 仁寿县| 琼中| 张家港市| 新宁县| 德令哈市| 鹤壁市| 马尔康县| 囊谦县| 称多县| 韩城市| 澄江县|