2013-09-22 67 views
0

我想將我的數據庫拆分爲兩個數據庫,快速檢查顯示我可以輕鬆查詢,連接,更新跨數據庫的表。將數據庫拆分爲兩個數據庫

我現在的主要問題是要做到這一點,我將不得不做這樣的事情。

SELECT * 
    FROM Database1.dbo.Table1, 
     Database2.dbo.Table2 

正如你可以看到我有明確的提到數據庫名稱,這意味着如果數據庫名稱部署有不同的名稱,該代碼將不再工作。

任何想法來克服這個問題?

+0

爲什麼要將它拆分到第一位?如果你認爲它會使它工作得更快,你很可能是錯誤的 – mvp

+0

我必須爲應用程序使用不同的終端,一個使用幾乎四分之一的數據庫,另一個使用整個數據庫。我不想部署整個數據庫與只使用四分之一的數據庫,我也不想爲每個終端創建兩個不同的數據庫。 – Sisyphus

+0

這些問題的典型解決方案是使用單個數據庫,但添加或使用某個字段可以根據情況限制查詢。您甚至可以使用視圖執行安全性,並賦予視圖不同的權限(並撤銷對基礎表的訪問)。 – mvp

回答

0

您可以使用db_name()來獲取當前數據庫名稱和動態sql以構建動態查詢。 類似於:

declare @databaseName nvarchar(max) = db_name() 

declare @dynamicSql nvarchar(max) = 'SELECT * FROM '+ @databaseName + '.dbo.Table1' 

exec sp_executesql @dynamicSql 
+0

感謝您的答案,這將工作,但不是很乾淨,我寧願沒有動態SQL的東西。 – Sisyphus