When I run this pass-through query from Microsoft Access that uses an odbc connection it works fine:
SELECT b.PRODUCT, b.UPC_NBR, b.EAN_NBR, b.NAME AS ProductDescription, b.AUTHOR,
o.RETAILER, o.REFER_NBR, o.ARDESC, a.NAME, o.TRAN_DATE,
o.QTY, o.RETAIL, o.PRICE, o.COST
FROM BOOK_MASTER_REC as b JOIN
ORBDETL_RECORD as o ON ISBN_TITLE = o.TITLE
AND ISBN_PUBLISHER = o.BK_PUBL
AND BOOK_GROUP = o.BK_GROUP
AND BOOK_PREFIX = o.BK_PREFIX JOIN
ARDESC_RECORD as a ON o.ARDESC = a.ARDESC
WHERE b.PRODUCT Between 600 And 698
When I run an identical query from SMSS that uses the same odbc connection via linked server it fails:
SELECT b.PRODUCT, b.UPC_NBR, b.EAN_NBR, b.NAME AS ProductDescription, b.AUTHOR,
o.RETAILER, o.REFER_NBR, o.ARDESC, a.NAME, o.TRAN_DATE,
o.QTY, o.RETAIL, o.PRICE, o.COST
FROM DPS_GPR..root.BOOK_MASTER_REC as b INNER JOIN
DPS_GPR..root.ORBDETL_RECORD as o ON ISBN_TITLE = o.TITLE
AND ISBN_PUBLISHER = o.BK_PUBL
AND BOOK_GROUP = o.BK_GROUP
AND BOOK_PREFIX = o.BK_PREFIX INNER JOIN
DPS_GPR..root.ARDESC_RECORD as a ON o.ARDESC = a.ARDESC
WHERE b.PRODUCT Between 600 And 698
It gives the following error:
OLE DB provider “MSDASQL” for linked server “DPS_GPR” returned message
“[Transoft][TSODBC][usqlsd]’)’ expected here (FROM)”. Msg 7321, Level
16, State 2, Line 2 An error occurred while preparing the query
“SELECT
Col1061,Col1062,Col1064,Col1065,Col1066,Col1042,Col1048,Col1049,Col1050,Col1051,Col1052,Col1053,Col1054,Tbl1005.NAME
Col1040 FROM root.ARDESC_RECORD Tbl1005,(SELECT
Col1057,Col1058,Col1059,Col1060,Col1061,Col1062,Col1064,Col1065,Col1066,Tbl1003.RETAILER
Col1042,Tbl1003.BK_PREFIX Col1043,Tbl1003.BK_GROUP
Col1044,Tbl1003.BK_PUBL Col1045,Tbl1003.TITLE
Col1046,Tbl1003.REFER_NBR Col1048,Tbl1003.ARDESC
Col1049,Tbl1003.TRAN_DATE Col1050,Tbl1003.QTY Col1051,Tbl1003.RETAIL
Col1052,Tbl1003.PRICE Col1053,Tbl1003.COST
Col1054,Col1067,Col1063,Tbl1003.SEQ Col1047,Tbl1003.PROCESSED_FLAG
Col1055 FROM root.ORBDETL_RECORD Tbl1003,(SELECT Tbl1001.BOOK_PREFIX
Col1057,Tbl1001.BOOK_GROUP Col1058,Tbl1001.ISBN_PUBLISHER
Col1059,Tbl1001.ISBN_TITLE Col1060,Tbl1001.UPC_NBR
Col1061,Tbl1001.EAN_NBR Col1062,Tbl1001.NAME Col1064,Tbl1001.AUTHOR
Col1065,Tbl1001.PRODUCT Col1066,Tbl1001.CATEGORY9
Col1067,Tbl1001.BOOK_NUMBER Col1063 FROM root.BOOK_MASTER_REC Tbl1001
WHERE Tbl1001.PRODUCT>=(600.) AND Tbl1001.PRODUCT<=(698.)) Qry1068
WHERE Col1060=Tbl1003.TITLE AND Col1059=Tbl1003.BK_PUBL AND
Col1058=Tbl1003.BK_GROUP AND Col1057=Tbl1003.BK_PREFIX) Qry1069 WHERE
Col1049=Tbl1005.ARDESC” for execution against OLE DB provider
“MSDASQL” for linked server “DPS_GPR”.
I would appreciate any ideas as to how I might get this working through SQL Server as I’m trying to get away from MS Access.
I was able to make this work by making it a pass-through query.
Not as ideal of a solution as I was hoping for, but it works.