昨天創建了一個View, 這個view是一系列的表達式(CTE)組成,封裝了好多的業務邏輯,簡化下語句如下
;with CTE AS(
...
)
SELECT a.company_id
,b.company_name
FROM #company_tech a
LEFT JOIN dim.company b ON a.company_id = b.company_id
LEFT JOIN [lindedserver].[DB].[kg].[viw_Maping] c ON a.tech_stack = c.Synonym
結果: 同事 review 數據的時候報以下錯誤。 select * from [dbo].[viw_so_job_tech_stack] with(nolock)
Msg 18456, Level 14, State 1, Line 1
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
但是我自己run這個view的數據是沒有任何問題的,一時間傻眼了。查找各種問題,都不能理解。明明我是可以run的,但是其他team member就是face errors。
這個問題的根源:linked server

DW(B)上面創建Source(A)的Linked server(用SQL 用戶名密碼創建). 但我在B上面創建view(取A的數據)時候,這個view是沒有問題的。
當我用client(C)鏈接到DW(B)的時候就出現了身份認證錯誤。
下面是msdn給我們提供的解決方案。
https://blogs.msdn.microsoft.com/sql_protocols/2006/08/10/sql-linked-server-query-failed-with-login-failed-for-user/
本人建議用SSIS 把相關數據從SOURCE同步到本地比較好。
