2016-11-07 30 views
1
DECLARE @DBS nvarchar(32) 
SET @DBS = 'Current' --'Archive' 
SELECT TOP 100 * 
    FROM [@DBS].[dbo].[table] 

我有2個結構相同的數據庫坐在同一臺服務器上。一個只保存30天的信息,用於快速報告處理,另一個保存數年的信息。如果我有Current.dbo.table或Archive.dbo.table,那麼這兩個查詢都可以正常執行,但我希望設置一個參數,以便在同一報告中切換當前和歸檔,以便用戶可以從歸檔數據庫而不必擁有管理員權限來切換數據源連接字符串。這可能嗎?我敢肯定,語法錯誤是因爲連接字符串不是一個nvarchar,但我找不出寫出這個查詢的正確方法。T-SQL聲明連接字符串作爲參數

+0

SQL Server或MySQL? – scsimon

回答

0

對於SQL Server,您需要動態SQL。

DECLARE @DBS nvarchar(32) 
SET @DBS = 'Current' --'Archive' 
DECLARE @SQL VARCHAR(MAX) 
SET @SQL = ' 
SELECT TOP 100 * 
    FROM ' + @DBS + '.[dbo].[table]' 
EXEC(@SQL) 
+0

這個伎倆! –

0

你可以試試這個。 根據您的參數值,單個選擇將返回所有行或不包含任何內容。

SELECT TOP 100 * 
    FROM [DBS].[dbo].[table] -- Your active table schema 
where @yourParamenter= 0 
union 
SELECT TOP 100 * 
    FROM [archiveDBS].[dbo].[table] -- Your archive table schema 
where @yourParamenter= 1