2016-12-08 4 views
0

私は、このようなクエリの何かを持っている私たちは私のコードでMSSQLでデータベースを動的に切り替えることはできますか?

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

     .. 
     userN = userDBN 

ユーザーごとに別のデータベースを持っているシナリオを持っています。

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

だから、僕はこのクエリを焼成前&変更にDB名を導出する必要があります。

私はちょうど右のクエリに持ってどこ私は、そのユーザがちょうど開始前USER1またはuser2が置き換えられます

select * from user.product; 

、私はMS-SQLサーバー側でいくつかの変更を行うことができるかどうかを知りたいですトランザクション。使用可能なメカニズムはありますか?私はクエリを実行する直前にdb名を切り替えるために使用できます。

複雑なクエリがたくさんあるので、私は多くの苦痛である各クエリを変更するつもりです。

注 - このデータベースはすべて同じSQLサーバーにあります。

ありがとうございました!あなたがして、動的にすべてのクエリを前に付けることができ

+0

の接続文字列を変更しようとする必要があります。 –

+0

[dynamic 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. は、データベース・ユーザー(NOTサーバーへのログイン)のために、各ユーザ
  2. セットのデフォルトスキーマのためのスキーマを作成します。あなたの場合、それはすべてのユーザーにとって異なるはずです。
  3. クエリ実行時

    *製品から選択してください。

表 'product'はデフォルトスキーマになります。

データベースの場合は、正しいユーザーに対して正しいデータベースに正しいクエリを実行し、一般的な手順でデータベースユーザーを作成し、各ユーザー

関連する問題