2016-11-24 40 views
-1

運行此其拾取信息到蘋果電腦,MAC標籤之間的RICHTEST表:XML查詢處理別名爲DB

INSERT INTO [dbo].RichTest 
SELECT doc.col.value('(.)[1]', 'nvarchar(50)') 
FROM @RichTests.nodes('/macs/mac') AS doc(col) 
WHERE NOT EXISTS (SELECT 1 FROM [RichTest] WHERE [Name] = doc.col.value('(.)[1]', 'nvarchar(50)') 

聞聽此事:

System.Data.SqlClient.SqlException:數據庫'Doc'無法打開,因爲它處於脫機狀態。

請注意,當它在SSMS中運行時,它會因上面列出的DB'Doc'錯誤而失敗。並運行以下查詢時:

Select @@version 

它返回

Microsoft SQL Server 2008 (SP3) - 10.0.5538.0 (X64) 

回答

1

你缺少在最後一個右括號。否則,它在SQL Server 2008 R2和SQL 2016 SSMS上運行正常。試試這個:

SELECT doc.col.value('(.)[1]', 'nvarchar(50)') 
    FROM @RichTests.nodes('/macs/mac') AS doc(col) 
    WHERE NOT EXISTS (SELECT 1 FROM [RichTest] WHERE [Name] = doc.col.value('(.)[1]', 'nvarchar(50)')); 

如果你仍然得到錯誤嘗試修補您的SSMS(或安裝更新的版本)。還要注意,SQL Server 2008有一個SP4,但我懷疑這是問題所在。更有可能你的SSMS是RTM ......點擊幫助,在SSMS中查看你的客戶端版本。