2016-12-08 74 views
0

我遇到的情況,我們有不同的數據庫爲每個用戶是否可以在MSSQL中動態切換數據庫?

eg: user1 = userDB1 (database name) 
     user2 = userDB2 (database name) 

     .. 
     userN = userDBN 

在我的代碼我有一個查詢這樣的事情。

select * from user1.product; 
select * from user2.product; 

所以我必須派生&在激發此查詢之前更改db名稱。

我想知道如果我能做到在MS-SQL服務器端的一些變化,在這裏我要恰到好處查詢

select * from user.product; 

,使用戶將USER1被替換或USER2只是開始前交易。有沒有任何機制可用的數據庫端,我可以用來切換數據庫名稱之前發射查詢。

由於有很多複雜的查詢,我已經去改變每個很痛苦的查詢。

注 - 所有這些數據庫都在同一個SQL服務器上。

謝謝您提前!

+0

創建與執行正確的用戶提供正確的數據庫的正確查詢的通用程序的數據庫用戶。 –

+0

您可以使用[動態sql](https://msdn.microsoft.com/en-us/library/ms709342%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)或更新連接字符串在Java中。但我建議您考慮將用戶添加爲[外鍵](https://technet.microsoft.com/en-us/library/ms175464(v = sql.105).aspx)到您的表中。 –

回答

0

你可以動態的前綴與每一個查詢:

USE userDB1; SELECT ... 
0

你確定你所談論的數據庫,而不是模式?

select * from user1.product; -- user1 is scheme 
select * from user1..product; --user1 is database 

在模式的情況下,您可以:

  1. 爲每個用戶
  2. 組默認架構數據庫用戶(而不是服務器登錄)創建模式。在你的情況下,它應該是所有用戶都不同。
  3. 當您執行查詢時

    select * from product;

表'product'將來自默認模式。

在數據庫的情況下,你應該嘗試改變連接字符串爲每個用戶

相關問題