Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Internal Query Processor Error: The query processor could not produce a query plan  [new]
Lisichkin
Member

Откуда:
Сообщений: 467
Добрый день!

MS SQL 2005 EE

Имеется таблица:
CREATE TABLE dbo.USER_ROLE (
	[USER_ID] [int] NOT NULL,
	[ROLE_ID] [int] NOT NULL,
 CONSTRAINT [PK_USER_ROLE] PRIMARY KEY CLUSTERED ([USER_ID], [ROLE_ID] )
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[USER_ROLE]  WITH CHECK ADD  CONSTRAINT [FK_USER_ROLE_ROLE] FOREIGN KEY([ROLE_ID])
REFERENCES [dbo].[ROLES] ([ID])
GO

ALTER TABLE [dbo].[USER_ROLE]  WITH CHECK ADD  CONSTRAINT [FK_USER_ROLE_USER] FOREIGN KEY([USER_ID])
REFERENCES [dbo].[USERS] ([ID])
GO


Попытка вставить данные в таблицу dbo.USER_ROLE вызывает ошибку:
"Внутренняя ошибка обработчика запросов: обработчику запросов не удалось предоставить план запроса. Для получения дополнительных сведений свяжитесь со службой поддержки"
(Internal Query Processor Error: The query processor could not produce a query plan. For more information, contact Customer Support Services)

Судя по этой ссылке: https://connect.microsoft.com/SQLServer/feedback/details/422368/internal-query-processor-error-when-instering-into-table-with-foreign-keys
Это глюк MS$. Удаление внешнего ключа FK_USER_RIGHT_RIGHT. Исправляет ошибку.
Но вот в чем прикол - процедура вставки данных, не работающая из под Delphi клиента, работает из под Managment Studio.

Может дело еще в каких-нибудь настройках SET клиента? И можно заставить код вставки данных работать и без удаление внешнего ключа (удалять foreign key не очень хочется)?

С Уважением Александр.

Код вызывающий ошибку:
if :HAS_RIGHT<>0 and IsNull(:OLD_HAS_RIGHT, 0)=0
	insert dbo.USER_RIGHT ([USER_ID], RIGHT_ID) values (:USER_ID, :HAS_RIGHT)
if 	IsNull(:HAS_RIGHT, 0)=0 and :OLD_HAS_RIGHT<>0
	delete from dbo.USER_RIGHT
	where [USER_ID]=:USER_ID and RIGHT_ID=:ID
17 май 17, 15:30    [20490176]     Ответить | Цитировать Сообщить модератору
 Re: Internal Query Processor Error: The query processor could not produce a query plan  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
Ну так сравните профайлером set-настройки студии и клиента.
17 май 17, 15:33    [20490192]     Ответить | Цитировать Сообщить модератору
 Re: Internal Query Processor Error: The query processor could not produce a query plan  [new]
Lisichkin
Member

Откуда:
Сообщений: 467
Как профайлером увидеть все set-настройки клиента?
17 май 17, 15:38    [20490211]     Ответить | Цитировать Сообщить модератору
 Re: Internal Query Processor Error: The query processor could not produce a query plan  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Lisichkin
Как профайлером увидеть все set-настройки клиента?

http://sqlblogcasts.com/blogs/martinbell/archive/2009/06/15/Other-ways-to-see-User-Options.aspx
17 май 17, 15:41    [20490223]     Ответить | Цитировать Сообщить модератору
 Re: Internal Query Processor Error: The query processor could not produce a query plan  [new]
Lisichkin
Member

Откуда:
Сообщений: 467
Всё страньше и страньше! Всё чудесатее и чудесатее!

Ниже указанный код выполняется. Если же закоментарить настройки --1 и снять комментарии с настроек --2 код перестает выполняться. НО код перестает выполнятся для данной сессии НАВСЕГДА. Т.е. если вернуть настройки --1 и закоментарить --2 ошибка не уходит.

begin tran

-- network protocol: LPC
-- 1
set quoted_identifier on
set arithabort on
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions on
set language русский
set dateformat dmy
set datefirst 1
set transaction isolation level read committed
/*
-- 2
-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language русский
set dateformat dmy
set datefirst 1
set transaction isolation level read committed
*/


declare @HAS_RIGHT int, @OLD_HAS_RIGHT int, @USER_ID int
select @HAS_RIGHT=2, @OLD_HAS_RIGHT=null, @USER_ID=24
if @HAS_RIGHT<>0 and IsNull(@OLD_HAS_RIGHT, 0)=0
	insert dbo.USER_RIGHT ([USER_ID], RIGHT_ID) values (@USER_ID, @HAS_RIGHT)

rollback
17 май 17, 16:13    [20490392]     Ответить | Цитировать Сообщить модератору
 Re: Internal Query Processor Error: The query processor could not produce a query plan  [new]
o-o
Guest
так сперва выставляете set implicit_transactions off,
и тут же открываете (пытаетеcь) implicit transaction
17 май 17, 16:21    [20490428]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить