[SQL SERVER][SSIS]傳送登入工作
我相信大家都有轉換、升級資料庫的經驗,
當轉換或平行升級資料庫到另一新SQL Instance後,
來源資料庫使用者會因為SID不正確對應而形成孤兒使用者,
而解決孤兒使用者的方法很多([SQL SERVER][TS]無法以資料庫主體錯誤訊息),
但現在我幾乎都使用SSIS來處理這樣的小問題。
來源資料庫使用以下語法確認是否有孤兒使用者
use
test1
go
EXEC sp_change_users_login @Action='Report';
沒有任何孤兒使用者。
以後版本 sp_change_users_log 可能會被移除,
請使用 sys.database_principals 來取得。
SELECT name,sid
FROM sys.database_principals
WHERE (sid is not null and sid <> 0x0)
and (len(sid) <= 16)
and suser_sname(sid) is null
沒有任何孤兒使用者。
我將來源資料庫轉移到新SQL Instance後,隨即產生孤兒使用者
use test1
go
SELECT name,sid
FROM sys.database_principals
WHERE (sid is not null and sid <> 0x0)
and (len(sid) <= 16)
and suser_sname(sid) is null
接下來我使用SSIS中的傳送登入工作來解決目的資料庫的孤兒使用者
記得複製SID並覆蓋。
編輯執行SQL工作
針對目的資料修改登入密碼並啟用。
執行成功。
如果你和我一樣很懶的話,可以一起傳送登入和資料庫
如果登入預設對應 master 的話,請先執行傳送登入,
如不是請先執行傳送資料庫後再執行傳送登入工作。
編輯傳送資料庫工作
選擇Cpoy動作。
參考