それぞれの「顧客」に独自のデータベースがあるプロジェクトを継承しました。何百ものデータベースがあります。ストアドプロシージャは現在使用されていません。何百もの同一のデータベースに1組のストアドプロシージャを使用
ここでデータを消費するためのベストプラクティスは何ですか?ストアドプロシージャを「マスター」データベースに保存し、動的SQLを使用してデータを処理しますか?はるかに良い方法があるように思われる。ストアドプロシージャを何百ものDBにプッシュして、すべてのストアドプロシージャを同期させた状態に保つための仕事を実行したくないのです。
この動的SQLは機能していますが、私はより良い方法が必要です。
CREATE PROCEDURE [Users_SELECT]
@DataBase nvarchar(20),
@UserID uniqueidentifier
AS
BEGIN
DECLARE @sql nvarchar(max)
SET @sql = ''
SET @sql += 'SELECT * FROM ' + @DataBase + '.dbo.Users u '
SET @sql += 'WHERE [email protected] '
EXEC sp_executesql @sql, N'@UserID uniqueidentifier', @UserID
END
私は、SELECTを実行しているEXEC sp_executesql 'USE ' + @DataBase + '; GO'
を試してみましたが、私はその作業を得ることができませんでした。
私はデータベースを所有しておらず、新しいデータベースを作成することもできません。これはオフラインアプリケーションによって処理されます - 私はこれをモバイルウェブサイトで補完しています。個々のデータベースの変更を控えたい。今のところ私は素早く汚れたデータレイヤーを書いており、SQLインジェクション攻撃を防ぐためには慎重に扱っています。 –