0
我有10個相同的數據庫。從不同數據庫獲取行的最佳方式是什麼?
我在運行時獲取數據庫名稱。
我想將行存儲到對象集合中。
我也只想在數據庫服務器上一擊。
我目前的做法: -
- 在查詢(X無緣無故的存儲過程)我得到了一個臨時表的數據庫和存儲列表。
然後我遍歷每個數據庫並創建一個動態查詢並執行它。
DECLARE @MaxRownum int SET @MaxRownum = (SELECT MAX(RowNum) FROM #Databases) DECLARE @Iter int SET @Iter = 1 WHILE @Iter <= @MaxRownum BEGIN DECLARE @Database varchar(255) SELECT @Database = Databases FROM #Databases WHERE RowNum = @Iter IF HAS_DBACCESS(@Database) > 0 BEGIN //appending query END SET @Iter = @Iter + 1 END EXEC(@Query)
我可以使用LINQ +實體框架,一重擊服務器,沒有動態查詢和不妨礙性能?有沒有更好的解決方案?
什麼是#temp表中的列?你能解釋'@Database(Databases)'和'@DatabaseName(Name)'之間的區別嗎?你對每個數據庫運行的實際查詢是什麼?你能解釋沒有存儲過程背後的原因嗎? –
謝謝。 #temp表是#Databases並具有數據庫列表。 sry我刪除了@databasename它不是必需的。我正在使用SELECT在2個表上使用連接。我不能使用存儲過程,因爲我必須對所有耗時的用戶執行訪問權限......謝謝 – om471987
在單個存儲過程中授予用戶執行權限比在所有10中爲這個表提供顯式選擇權耗費更多的時間數據庫?那很有意思。 :-) –