我繼承了一個項目,其中每個「客戶」都有自己的數據庫。有數百個數據庫。存儲過程目前未被使用。對數百個相同的數據庫使用一組存儲過程
什麼是在這裏使用數據的最佳實踐?我是否將存儲過程保留在「主數據庫」中並使用動態SQL來處理數據?似乎應該有更好的方法。我不希望有一份工作能夠推動數百個數據庫的存儲過程,以保持所有存儲過程的同步。
這個動態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
我試圖EXEC sp_executesql 'USE ' + @DataBase + '; GO'
然後運行一個SELECT,但我無法得到那個工作。
我不擁有數據庫,也不擁有創建新數據庫的能力。這是由一個離線應用程序處理 - 我正在補充與移動網站。我想避免單獨更改數據庫。現在我正在寫一個快速而髒的數據層,並且儘可能小心地防止SQL注入攻擊。 – 2012-01-23 19:17:54