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

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827222
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

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

          A. 顯示登錄映射的當前用戶的報告

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

          EXEC sp_change_users_login 'Report';

          B. 將數據庫用戶映射到新的 SQL Server 登錄名

          在以下示例中,數據庫用戶與新的 SQL Server 登錄名關聯。數據庫用戶 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 將現有用戶映射到同名的登錄名,以及如何在不存在登錄名 Mary 的情況下,創建密碼為 B3r12-3x$098f6 的 SQL Server 登錄名 Mary

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

          一、孤立帳戶,就是某個數據庫的帳戶只有用戶名而沒有登錄名,這樣的用戶在用戶庫的sysusers系統表中存在,而在master數據庫的syslogins中卻沒有對應的記錄。

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

          解決方法是使用sp_change_users_login來修復。

          sp_change_users_login的用法有三種

          用法1:
          exec sp_change_users_login 'REPORT'
          列出當前數據庫的孤立用戶

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

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

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

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

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

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



          posted on 2012-07-08 12:13 Ke 閱讀(1146) 評論(0)  編輯  收藏 所屬分類: sql server
          主站蜘蛛池模板: 万安县| 成都市| 麦盖提县| 治多县| 青浦区| 惠东县| 沙雅县| 临沂市| 新野县| 金川县| 柏乡县| 敖汉旗| 长泰县| 兰溪市| 汨罗市| 张家界市| 德阳市| 兰考县| 泗阳县| 武邑县| 大港区| 崇左市| 宁海县| 弥渡县| 德清县| 武强县| 长寿区| 南通市| 保山市| 锦州市| 噶尔县| 乐至县| 武邑县| 新建县| 灵山县| 出国| 兴隆县| 闵行区| 寿宁县| 三明市| 江山市|