运行它,将信息传递到macs-mac标签之间的RICHTEST表中:
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:Database' Doc'因为离线而无法打开。
请注意,当它在SSMS中运行时,它会因DB' Doc'而失败。错误概述如上。并在运行以下查询时:
Select @@version
返回
Microsoft SQL Server 2008 (SP3) - 10.0.5538.0 (X64)
答案 0 :(得分:1)
您在结尾处缺少右括号。否则它在SQL Server 2008R2和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中查看您的客户端版本。