Mirror 映象使用者同步

2021-09-06 13:30:47 字數 2677 閱讀 9895

--****************************************=

--在映象搭建後,在主庫伺服器上建立登入,並在資料庫上建立對應使用者,

--資料庫中使用者被同步到映象資料庫中,但登入是例項級物件,無法同步,

--因此需要手動同步登入到映象例項上。

--當登入未同步到映象例項上時,如果映象發生故障轉移,則應用程式

--無法訪問映象資料庫,映象資料庫上未與登入向管理的使用者被稱為

--孤立使用者

--****************************************=

--sp_change_users_login [ @action = ] 'action'

[ , [ @usernamepattern = ] 'user' ]

[ , [ @loginname = ] 'login' ]

[ , [ @password = ] 'password' ]

[;]--auto_fix

--將當前資料庫的sys.database_principals 系統目錄檢視中的使用者項鍊接到同名的sql server 登入名。如果不存在同名的登入名,將會建立乙個。檢查auto_fix 語句的結果,確認實際鏈結是否正確。在對安全性較為敏感的情況下,要避免使用auto_fix。

--如果使用auto_fix 時登入名尚不存在,則必須指定user 和password,否則必須指定user,但password 將被忽略。login 必須為null。user 必須是當前資料庫中的有效使用者。不能將另乙個使用者對映到該登入名。

--report

--列出當前資料庫中未鏈結到任何登入名的使用者以及相應的安全識別符號(sid)。user、login 和password 必須為null 或不指定。

--若要使用系統表通過某個查詢替換報表選項,請將sys.server_prinicpals 中的條目與sys.database_principals 中的條目進行比較。

--update_one

--將當前資料庫中指定的user 鏈結到現有的sql server login。必須指定user 和login。password 必須為null 或不指定。

--****************************************=

--映象切換後

--檢視孤立使用者

use repdb

goexec sp_change_users_login

@action = 'report',

@usernamepattern = null,

@loginname  = null,

@password =  null

--****************************************=

--建立登入[t1],並將t1和資料庫[repdb]中的使用者[t1]關聯

--該方式同樣導致映象兩段的登入sid不同,從而導致孤立使用者

use [master]

gocreate login [t1] with password=n't1', default_database=[master], check_expiration=off, check_policy=off

gouse repdb

goexec sp_change_users_login

@action = 'update_one',

@usernamepattern = 't1',

@loginname  = 't1'

--****************************************=

--使用auto_fix來解決

--該方式同樣導致映象兩段的登入sid不同,從而導致孤立使用者

use repdb

goexec sp_change_users_login

@action = 'auto_fix',

@usernamepattern = 't2',

@password =  't2'

--****************************************=

--推薦做法

--在主庫上查詢得到需要同步的使用者sid

use master;

select sid,name from syslogins;

--****************************************====

--在從庫上建立登入

exec sp_addlogin

@loginame = 'db1login',

@passwd = 'sql@123',

@sid=0x82873b5affefe54eb4f9ca05c303c9ae

--****************************************====

--msdn:

exec sp_addlogin [ @loginame = ] 'login'

[ , [ @passwd = ] 'password' ]

[ , [ @defdb = ] 'database' ]

[ , [ @deflanguage = ] 'language' ]

[ , [ @sid = ] sid ]

[ , [ @encryptopt = ] 'encryption_option' ]

[;]

Mirror 映象斷開的解決辦法

如果映象在搭建一段時候後出現問題,可能存在以下原因 1.因為主庫或映象庫存在記憶體壓力,導致無法完成映象日誌傳送和重做 解決辦法 設定資料庫最小記憶體,保證資料庫有足夠記憶體完成映象操作 2.因為主庫和映象庫斷開連線,導致映象失敗 解決辦法 1.使用telnet ip 5022來檢查雙方之間的網路和...

Solaris 10 映象同步維護

solaris 映象maintenance mirror 歡迎來到來到大浪濤天的部落格!檢視映象發現有映象塊需要被維護 root webserver metastat d20 mirror submirror 0 d21 state okay submirror 1 d22 state needs ...

Apache Ranger同步使用者設定

ranger同步使用者是單向同步,從 unix ldap ad file 中,通過ranger usersync外掛程式,同步使用者和使用者組到ranger admin 資料庫 中。配置檔案中ranger.usersync.cookie.enabled 預設為true,同步的外部使用者在ranger...