2014-08-27 34 views
0

在我的數據庫中,我有兩個模式 - 默認.dbo和另一個名爲.ptx 兩個模式中的幾乎所有表都是相同的。我們需要兩個模式來分別處理兩種不同產品的數據。如何在這兩種模式之間切換是通過從應用程序級別更改SQL Server登錄用戶。即,我們有兩個SQL用戶ANF_DEFAULT和ANF_PTX。如果產品是默認的,那麼用戶是ANF_DEFAULT,如果產品是PTX,則將用戶切換到ANF_PTX並相應地創建SqlConnection。SQL Server - 數據未寫入正確的模式

到目前爲止,一切都運行良好,兩個模式正確填充。但是,在我們進入新的生產環境後,突然間,PTX產品數據進入.dbo模式而不是.ptx模式。這在我的本地環境中仍然正常工作,但問題在生產中可見。唯一可見的變化是我使用SQL Server 2008,因爲生產運行SQL Server 2012,但我認爲這不是問題。我也檢查了ANF_PTX用戶的屬性:

USE [ANX_GLF] 
GO 

/****** Object: User [ANF_PTX] Script Date: 8/27/2014 5:29:04 AM ******/ 
CREATE USER [ANF_PTX] FOR LOGIN [ANF_PTX] WITH DEFAULT_SCHEMA=[PTX] 
GO 

請幫我解決這裏的問題。

回答

0

我想出了這個問題的原因。顯然,在新部署中,_CMS用戶看起來很好,其默認架構指向.cms。但是,問題出在SQL Server中登錄FMSI_APP_CMS。在此登錄中,FMSI_APP_CMS用戶被分配給超級管理員角色。當用戶是超級管理員時,其默認模式將被忽略,並且它總是指向.dbo模式。當superadmin角色從登錄中刪除時,架構開關再次正常工作。 http://msdn.microsoft.com/en-us/library/ms176060.aspx

這說:。 「他DEFAULT_SCHEMA的值,如果用戶是sysadmin固定服務器角色成員的sysadmin固定服務器角色的所有成員都忽略了關於這方面更多的信息可以在下面找到有一個dbo的默認模式。「