2012-11-16 65 views
0

所以我有兩個數據庫,它們之間沒有任何關係。第一個是我的dbo.Clients存在的地方,並有第二個數據庫的數據庫名稱列。我的想法是從客戶端中選擇dbName,然後使用該變量從第二個數據庫中選擇數據。 查詢不運行可以有人擺脫一點點光?謝謝。從變量中選擇數據庫

@dbName varchar(50) OUTPUT, 
@clientID varchar(50) 
AS 
BEGIN 
    SET NOCOUNT ON; 
    -- Insert statements for procedure here 
    SELECT * FROM sql02.iproconfig4.dbo.Clients 
    SET @dbName = (SELECT Clients.ClientDatabase FROM sql02.iproconfig4.dbo.Clients WHERE ClientID = @clientID) 
    SELECT * FROM [email protected] 
END 
+0

嘗試搜索:查詢從不同的架構兩個表。 –

回答

0

您將需要使用dynamic SQL來實現:

DECLARE @sql nvarchar(max) 
SET @sql = 'SELECT * FROM sql02.' + @dbName + '.dbo.Discovery' 
EXEC sp_executesql @sql 
+0

這幾乎可以工作,雖然它給了我一個無效的對象名稱'iproconfig4_14112_0007.dbo.Discovery'。那是什麼意思? – jpavlov

+0

在名爲'sql02'的服務器上有一個名爲'iproconfig4_14112_0007'的數據庫嗎? – Curt

+0

雅,它實際上有 – jpavlov