Sql-Server

導入為 VS DB 項目後“未解決對使用者的引用”

  • November 10, 2020

我剛剛將現有的 SQL Server 2008r2 生產數據庫導入到 VS 2013 數據庫項目中。

我現在遇到了一些錯誤

Error       SQL71501: User: [mydbuser] has an unresolved reference to Login [mydbuser].

我真的不需要我的 VS DB 項目來管理使用者,但我擔心如果它們不存在,它會在部署時嘗試刪除它們。

文件本身生成為

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

要麼

CREATE USER [mydomainuser] FOR LOGIN [MYDOMAIN\mydomainuser];

錯誤標記顯示它專門用於Login。由於這是一個系統級對象,我可以理解它超出了 db 項目的範圍。

我是否願意將它們全部更改為

CREATE USER [mydbuser] WITHOUT LOGIN;

或將CREATE LOGIN子句添加到每個文件的開頭?

刪除登錄引用似乎更簡單,完全刪除使用者將是最簡單的。

我想確保我按照預期的方式使用該工具。將其中任何一個重新發佈到生產環境中會不會有任何問題?通過項目添加使用者/登錄名的正確程序是什麼?

最簡單的方法是不通過 ssdt 管理使用者(大多數人不會)。所以你可以把它們去掉,不要部署登錄名或使用者。

有以下三種方式:

我有同樣的問題並找到了這個連結

使用者對登錄有未解決的引用

如果您創建特定於應用程序的登錄名(您應該這樣做),那麼您在嘗試建構解決方案時會遇到此錯誤。要更正此錯誤,請在進行模式比較(右鍵點擊數據庫項目以查找模式比較)時在選項(頂部的齒輪圖示)中選擇包含“非應用程序範圍”對像類型。然後,您可以將登錄資訊導入正常項目,並對引用進行排序。注意:如果您點擊“對像類型”選項卡並關閉對話框(它為我所做的),請使用 tab 鍵直到突出顯示應用程序範圍,然後按向下箭頭突出顯示非應用程序範圍並按空格鍵。現在您應該能夠點擊“確定”並查看登錄資訊。

引用自:https://dba.stackexchange.com/questions/107556