2010-01-14 38 views
0

我正在使用使用ADO訪問數據的SQL Server數據庫作爲後端的Delphi/WIN32應用程序。有許多用戶使用這個應用程序,但有一個用戶使用特殊設置:他們有多個數據庫模式,每個模式都包含應用程序的完整數據模型。每個模式還有一個數據庫用戶,該用戶默認爲特定模式。他們還爲每個數據庫用戶提供一個單獨的登錄帳戶,允許他們通過在連接字符串中使用不同的登錄帳戶來控制要使用的模式。 他們使用此設置有一個支持多個辦公室的單一中央數據庫。通常,每個辦公室都有它自己的數據庫,但在這裏,每個辦公室都有自己的模式。如何切換數據庫模式?

我喜歡他們使用的解決方案。我之前沒有想到過,因爲應用程序通常由單個辦公室使用。只有這個客戶需要有一個集中的數據庫。該應用程序工作得很好,即使它不知道這些模式,只是因爲登錄帳戶將默認爲正確的模式。

但是現在他們已經問過是否有可能以用戶可以選擇他們想要連接的模式的方式更改代碼。因此,用戶需要能夠在應用程序中的模式之間切換。我不想重寫代碼來支持這些模式,因爲我需要保持SQL代碼數據庫的中立性。所以我正在尋找一種方法將用戶切換到另一個模式,而不會對代碼本身造成太大影響。

有什麼建議嗎?

回答

0

如何更改用戶的默認模式?

ALTER USER <user name> 
    WITH DEFAULT_SCHEMA = <desired schema>; 

當然,你需要執行這個下提升的權限,因爲我敢肯定你沒有用ALTER USER功能的所有用戶。

+0

我已經考慮過了,但它會影響數據庫用戶,而不是登錄帳戶。可能有多個登錄帳戶鏈接到數據庫用戶,他們都會查看其他架構。不是一個好主意。 – 2010-01-14 14:50:58

+0

我不明白,你似乎表示登錄:用戶是1:1:「爲每個數據庫用戶單獨登錄帳戶」 – 2010-01-14 15:38:54

+0

不幸的是,沒有。用戶和登錄之間有1:n的關係。但每個登錄只能連接1個用戶。 – 2010-01-14 16:16:53