Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Уважаемые форумчане, помогите разобраться. Имеется скрипт sql выполняемый в программе написанной в Embarcadero RAD Studio XE2, использую Microsoft SQL Server 2008 R2.

BASE.Query.SQL.Add('Disable trigger tD_TJ0001 on TJ0001');
BASE.Query.ExecSQL();


На локальном компьютере скрипт обрабатывается правильно, а при использовании на другом входящий в домен компьютере, то он выдает ошибку о том что Неправильный синтаксис около ключевого слова trigger. База sql расположена на другом компьютере.
С чем это связанно?
19 авг 13, 16:26    [14726582]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
Glory
Member

Откуда:
Сообщений: 104760
SUDOMaSteR
С чем это связанно?

Это связано с неправильным синтаксисом. Как и написано в сообщении.
select @@version поможет понять версию для "База sql расположена на другом компьютере"
19 авг 13, 16:30    [14726609]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Glory, в том то и дело, что на локальном, что на сетевом, SQL одной и той же версии.
19 авг 13, 16:33    [14726631]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
Glory
Member

Откуда:
Сообщений: 104760
SUDOMaSteR
Glory, в том то и дело, что на локальном, что на сетевом, SQL одной и той же версии.

Результат select @@version приведите
И Compatibility Level для базы, в которой выполняется запрос
19 авг 13, 16:36    [14726646]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Glory, кстати, если эту строку выполнить в самом sql, а не через программу, то он его без ошибочно выполняет!
19 авг 13, 16:36    [14726647]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SUDOMaSteR
кстати, если эту строку выполнить в самом sql, а не через программу, то он его без ошибочно выполняет!

Возьмите профайлер и посмотрите, какая команда приходит "через программу".
19 авг 13, 16:37    [14726656]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
Glory
Member

Откуда:
Сообщений: 104760
SUDOMaSteR
Glory, кстати, если эту строку выполнить в самом sql, а не через программу, то он его без ошибочно выполняет!

Значит программа передает другой запрос. Логично ?
19 авг 13, 16:38    [14726667]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Glory
SUDOMaSteR
Glory, в том то и дело, что на локальном, что на сетевом, SQL одной и той же версии.

Результат select @@version приведите
И Compatibility Level для базы, в которой выполняется запрос


Локального компьютера:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Уровень совместимости: SQL server 2008 (100)

Версию сетевого написать пока не могу, так как он на работе.
Но базу переносил бэкапом с локального.
19 авг 13, 16:41    [14726690]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Glory
SUDOMaSteR
Glory, кстати, если эту строку выполнить в самом sql, а не через программу, то он его без ошибочно выполняет!

Значит программа передает другой запрос. Логично ?

Логично! Но как тогда он так делает, если код не меняю, но при этом на локальном он выполняет верно?!
19 авг 13, 16:43    [14726708]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Гость333
SUDOMaSteR
кстати, если эту строку выполнить в самом sql, а не через программу, то он его без ошибочно выполняет!

Возьмите профайлер и посмотрите, какая команда приходит "через программу".

Можешь посоветовать какой нибудь!?
19 авг 13, 16:44    [14726717]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
baracs
Member

Откуда: Москва
Сообщений: 7206
SUDOMaSteR
Гость333
пропущено...

Возьмите профайлер и посмотрите, какая команда приходит "через программу".

Можешь посоветовать какой нибудь!?
SQL Server Profiler
?
19 авг 13, 17:00    [14726822]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
baracs
SUDOMaSteR
пропущено...

Можешь посоветовать какой нибудь!?
SQL Server Profiler
?


О, точно!) Спасибо!)
19 авг 13, 17:10    [14726887]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
SUDOMaSteR
Glory
пропущено...

Результат select @@version приведите
И Compatibility Level для базы, в которой выполняется запрос


Локального компьютера:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Уровень совместимости: SQL server 2008 (100)

Версию сетевого написать пока не могу, так как он на работе.
Но базу переносил бэкапом с локального.


Сетевого компьютера:
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2769.0 (X64) Jun 24 2011 13:09:43 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Через SQL Server Profiler отследил что из программы в SQL выходит каким то чудом вот такая строка
exec Disable trigger tD_TJ0001 on TJ0001
20 авг 13, 04:21    [14728431]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SUDOMaSteR
Через SQL Server Profiler отследил что из программы в SQL выходит каким то чудом вот такая строка
exec Disable trigger tD_TJ0001 on TJ0001

Помнится, недавно здесь была тема, что с компьютера под управлением Windows XP вместо команды "MERGE Таблица ..." на SQL Server приходила команда "exec MERGE Таблица ...", и виноват в этом вроде был устаревший драйвер ADO. С компьютера под управлением Windows 7 приходила нормальная команда.

Попробуйте поставить перед командой Disable trigger точку с запятой, или какой-нибудь комментарий.
20 авг 13, 08:48    [14728637]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Гость333
Попробуйте поставить перед командой Disable trigger точку с запятой, или какой-нибудь комментарий.


или офрмить данную команду в процедуру, и вызывать ее в дельфях.

или вместо
BASE.Query.ExecSQL();
что-то вроде
BASE.Query.OpenSQL();

какие это компоненты?
20 авг 13, 09:41    [14728879]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Гость333
SUDOMaSteR
Через SQL Server Profiler отследил что из программы в SQL выходит каким то чудом вот такая строка
exec Disable trigger tD_TJ0001 on TJ0001

Помнится, недавно здесь была тема, что с компьютера под управлением Windows XP вместо команды "MERGE Таблица ..." на SQL Server приходила команда "exec MERGE Таблица ...", и виноват в этом вроде был устаревший драйвер ADO. С компьютера под управлением Windows 7 приходила нормальная команда.

Попробуйте поставить перед командой Disable trigger точку с запятой, или какой-нибудь комментарий.

Спасибо! Обязательно попробую! Как только будут результаты, отпишусь!
20 авг 13, 09:43    [14728887]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SUDOMaSteR,

А вообще отключать триггеры с клиента — весьма, скажем так, своеобразная практика.
Можете описать, какую задачу вы так решаете?
20 авг 13, 09:46    [14728903]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
StarikNavy
Гость333
Попробуйте поставить перед командой Disable trigger точку с запятой, или какой-нибудь комментарий.


или офрмить данную команду в процедуру, и вызывать ее в дельфях.

или вместо
BASE.Query.ExecSQL();
что-то вроде
BASE.Query.OpenSQL();

какие это компоненты?

Использую ADOQuery.
20 авг 13, 09:49    [14728921]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
Гость333
SUDOMaSteR,

А вообще отключать триггеры с клиента — весьма, скажем так, своеобразная практика.
Можете описать, какую задачу вы так решаете?


Требуется удалить строку с таблицы, но срабатывает триггер с таким содержанием
Cannot delete last dbo.TJ0001 because dbo.FS0001 exists.
Но при этом мне не нужно чтоб что то удалялось из другой таблицы, вот как временное решение и использую. :)
20 авг 13, 09:58    [14728975]     Ответить | Цитировать Сообщить модератору
 Re: Неправильный синтаксис около ключевого слова trigger (Embarcadero RAD Studio XE2)  [new]
SUDOMaSteR
Member

Откуда:
Сообщений: 16
SUDOMaSteR
Гость333
пропущено...

Помнится, недавно здесь была тема, что с компьютера под управлением Windows XP вместо команды "MERGE Таблица ..." на SQL Server приходила команда "exec MERGE Таблица ...", и виноват в этом вроде был устаревший драйвер ADO. С компьютера под управлением Windows 7 приходила нормальная команда.

Попробуйте поставить перед командой Disable trigger точку с запятой, или какой-нибудь комментарий.

Спасибо! Обязательно попробую! Как только будут результаты, отпишусь!


Помогла точка с запятой!

BASE.Query.SQL.Add(';Disable trigger tD_TJ0001 on TJ0001');
BASE.Query.ExecSQL();


Всем спасибо! :)
22 авг 13, 05:31    [14739293]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить