當我創建於2012年的SQL一個Visual Studio數據庫項目,並將其與現有的數據庫(使用比較模式)同步,我也同步SQL Server登錄之前就存在。 Visual Studio中生成的登錄下面的腳本:的Visual Studio數據庫項目:檢查是否SQL Server登錄創建它
CREATE LOGIN [my_user] WITH PASSWORD = 'somesecurepass'
當我嘗試發佈,其中該登錄存在服務器上生成的SQL,SQLCMD顯示我的錯誤:
The server principal my_user already exists.
當我看由Visual Studio生成的SQL腳本,我發現許多對象都被包裝在IF EXISTS語句中,但是CREATE LOGIN未被包裝!
我試圖手動敷在SQL腳本項目,但後來該項目不建並有指向如果一個錯誤:
SQL70001: This statement is not recognized in this context.
現在我該怎樣強制Visual Studio來生成使用IF EXISTS檢查的登錄創建腳本也不會失去同步功能?
如何將用戶移除到預部署腳本中?只是一個猜測...... – abx78
@ abx78:是的,我想過了,但是我還必須將該登錄的實際數據庫用戶創建移動到部署前(如果我不這樣做,Visual Studio會在我說my_db_user對my_user登錄有一個不好的引用)。再次 - 如果在將數據庫部署到數據庫之後,某人運行架構比較,則這些登錄名和用戶將像最初一樣再次出現在項目中。 – JustAMartin
我不明白爲什麼模式比較發現登錄,如果它已經存在於目標中。 –