Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка при выполнении через sqlcmd  [new]
capt_vimes
Member

Откуда:
Сообщений: 4
Добрый день, есть запрос который отлично выполняется в sql management studio, но при выполнении через sqlcmd выдает ошибку, помогите пожалуйста исправить

SELECT
   SessionDishes."QUANTITY" AS "DISHQNT",
   MENUITEMS00."NAME" AS "NAME",
   TABLES00."CODE" AS "CODE",
   MENUITEMS00."COOKMINS" AS "COOKMINS",
   KDSData00."COOKTM" AS "COOKTM",
   KDSData00."DONEAT" AS "DONEAT",
   GLOBALSHIFTS00."SHIFTDATE" AS "SHIFTDATE",
   EMPLOYEES00."NAME" AS "NAME1",
   EMPLOYEES00."CODE" AS "CODE1",
   GLOBALSHIFTS00."SHIFTNUM" AS "SHIFTNUM",
   KDSData00."SENTAT" AS "SENTAT",
   KDSData00."TAKEAT" AS "TAKEAT",
   RESTAURANTS00."NAME" AS "RESTAURANT",
   MENUITEMS00."CODE" AS "CODE2"
FROM SESSIONDISHES
LEFT JOIN MENUITEMS MENUITEMS00
   ON (MENUITEMS00.SIFR = SessionDishes.Sifr)
LEFT JOIN OrderSessions OrderSessions00
   ON (OrderSessions00.Visit = SessionDishes.Visit) AND
(OrderSessions00.MidServer = SessionDishes.MidServer) AND
(OrderSessions00.UNI = SessionDishes.SessionUNI)
LEFT JOIN Orders Orders00
   ON (Orders00.Visit = OrderSessions00.Visit) AND (Orders00.MidServer =
OrderSessions00.MidServer) AND (Orders00.IdentInVisit =
OrderSessions00.OrderIdent)
LEFT JOIN TABLES TABLES00
   ON (TABLES00.SIFR = Orders00.TableID)
LEFT JOIN KDSData KDSData00
   ON (KDSData00.KDSSIFR = SessionDishes.KDSIdent) AND
(KDSData00.MidServer = SessionDishes.MidServer)
LEFT JOIN GLOBALSHIFTS GLOBALSHIFTS00
   ON (GLOBALSHIFTS00.MidServer = Orders00.MidServer) AND
(GLOBALSHIFTS00.ShiftNum = Orders00.iCommonShift)
LEFT JOIN EMPLOYEES EMPLOYEES00
   ON (EMPLOYEES00.SIFR = Orders00.MainWaiter)
LEFT JOIN CASHGROUPS CASHGROUPS00
   ON (CASHGROUPS00.SIFR = SessionDishes.Midserver)
LEFT JOIN RESTAURANTS RESTAURANTS00
   ON (RESTAURANTS00.SIFR = CASHGROUPS00.Restaurant)


Ругается так:

Сообщение 102, уровень 15, состояние 1, сервер RKSERVER\SQLEXPRESS, строка 2
Неправильный синтаксис около конструкции "QUANTITY".
18 апр 16, 10:26    [19070518]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
Glory
Member

Откуда:
Сообщений: 104760
Зачем "QUANTITY" и все прочие имена взяты в кавычки ?
18 апр 16, 10:30    [19070553]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Квотирование квадратными скобками пробовали? Как запрос выглядит при вызове через sqlcmd? Что с QUOTED_IDENTIFIER?
18 апр 16, 10:31    [19070561]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
_djХомяГ
Guest
+1 в смысле кавычек
а если уж так хочется см в сторону set quoted_identifier
18 апр 16, 10:31    [19070562]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
capt_vimes
Member

Откуда:
Сообщений: 4
Glory, хз, запрос создан через ж*пу т.е. путем выдирания его из программы ;)
18 апр 16, 10:32    [19070563]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
Glory
Member

Откуда:
Сообщений: 104760
capt_vimes
Glory, хз, запрос создан через ж*пу т.е. путем выдирания его из программы ;)

Ну так наверное программа перед эти запросом еще какие-то команды выполняет.
Чтобы двойные кавычки сервер воспринимал как экранирование имен объектов
18 апр 16, 10:39    [19070610]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Попробуйте убрать двойные кавычки либо явно указывать QUOTED_IDENTIFIER. Хотя в последнем я смысла не вижу.

+
SELECT
   sd.QUANTITY AS DISHQNT,
   mi.NAME,
   t.CODE,
   mi.COOKMINS,
   k.COOKTM,
   k.DONEAT,
   g.SHIFTDATE,
   e.NAME AS NAME1,
   e.CODE AS CODE1,
   g.SHIFTNUM,
   k.SENTAT,
   k.TAKEAT,
   r.NAME AS RESTAURANT,
   mi.CODE AS CODE2
FROM dbo.SESSIONDISHES sd
LEFT JOIN dbo.MENUITEMS mi ON mi.SIFR = sd.Sifr
LEFT JOIN dbo.OrderSessions os ON os.Visit = sd.Visit
    AND os.MidServer = sd.MidServer
    AND os.UNI = sd.SessionUNI
LEFT JOIN dbo.Orders o ON o.Visit = os.Visit
    AND o.MidServer = os.MidServer
    AND o.IdentInVisit = os.OrderIdent
LEFT JOIN dbo.[TABLES] t ON t.SIFR = o.TableID
LEFT JOIN dbo.KDSData k ON k.KDSSIFR = sd.KDSIdent
    AND k.MidServer = sd.MidServer
LEFT JOIN GLOBALSHIFTS g ON g.MidServer = o.MidServer
    AND g.ShiftNum = o.iCommonShift
LEFT JOIN dbo.EMPLOYEES e ON e.SIFR = o.MainWaiter
LEFT JOIN dbo.CASHGROUPS cg ON cg.SIFR = sd.Midserver
LEFT JOIN dbo.RESTAURANTS r ON r.SIFR = cg.Restaurant
18 апр 16, 10:47    [19070651]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
o-o
Guest
Надо sqlcmd с -I запускать, потому что по умолчанию sqlcmd выставляет quoted_identifier в off
18 апр 16, 11:14    [19070845]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
capt_vimes
Member

Откуда:
Сообщений: 4
o-o,

Спасибо! помогло :)
18 апр 16, 12:55    [19071476]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при выполнении через sqlcmd  [new]
capt_vimes
Member

Откуда:
Сообщений: 4
Господа, всем спасибо огромное, действительно проблема в кавычках была, ключ -I помог ее решить
18 апр 16, 13:11    [19071561]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить