2016-11-13 42 views
0

下面的語句時,數據庫上下文設置爲AdventureWorks2014在SQL Server 2016一個OData服務中檢索數據:一個questionon FOR JSON委派JSON格式到SQL Server

SELECT 'http://services.odata.org/V4/Northwind/Northwind.svc/$metadata#Products(ProductID,ProductName)/$entity' 
AS '@odata.context', ProductID, Name as ProductName 
FROM Production.Product 
WHERE ProductID <400 
FOR JSON AUTO 

當「主人」是上下文,它返回一個錯誤。 但是,Northwind不在SQL Server 2016中,而在同一臺Windows 10機器上的SQL Server 2012實例中。

爲什麼在運行查詢的數據庫上下文是'AdventureWorks 2014'時工作?

上面的查詢是從這個鏈接: https://msdn.microsoft.com/en-us/library/dn921897.aspx

回答

0

如果是當前數據庫,這個查詢將設法找到Production.Product表在master數據庫中,它會失敗,因爲沒有這樣的一種那裏的桌子。 您應該將查詢的上下文切換到放置表的數據庫,或者使用明確的數據庫名稱使用三個部分名稱,例如:

SELECT 'http://services.odata.org/V4/Northwind/Northwind.svc/$metadata#Products(ProductID,ProductName)/$entity' 
AS '@odata.context', ProductID, Name as ProductName 
FROM AdventureWorks2014.Production.Product 
WHERE ProductID <400 
FOR JSON AUTO