Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
Уважаемые форумчане, помогите пожалуйста понять ошибку.
Гугл как-то неособо подсказал мне пути ее решения да и вообще почему такая ошибка возникает.
Мои изыскания привели к следующему заключению:

Сама ошибка (см скрин) появлялась у пользователя при нажатии на кнопочку. Причем это было не у всех пользователей а только у двух.
Как доблестный сыщик я начал разбираться откуда тут могут расти ноги.
У меня при таких же действиях ошибка не возникала.
Излазив и попробовав различные вариации на тему гугления по данной ошибке нашел вот эту ссыль

[url=]https://technet.microsoft.com/ru-ru/library/cc645860(v=sql.105).aspx[/url]

Там указывается код ошибки = 1005 и прям точь в точь подходит описание. Но ни что это ни как с этим бороться нет...
Давай думать дальше. Начал пытаться локализовать данную ошибку до поиска конкретного объекта БД. И вроде нашел. При этом гадила данной ошибкой функция в БД.
Самое что интересное - первый раз она выполнялась. А второй раз при выполнении (не выдавая результата), вываливала данную ошибку.
Пытаясь понять почему это происходило только на определенных рабочих станциях путем проб и опытов, я пришел к выводу, что данная ошибка возникает у тех, у кого установлена ОС - Windows XP (у тех у кого все работает стоит 7-ка).
Данный вывод поставил меня в тупик. Даже и незнаю что делать дальше.
Подскажите пожалуйста, куда нужно копать?

ЗЫ: Серверная часть - SQL Server 2008 R2
ЗЫЫ: Незнаю поможет ли код функции, но приложу и его на всякий случай

+
USE [SUBL]
GO
/****** Object:  UserDefinedFunction [dbo].[fn_CheckValidFillingOfJDW]    Script Date: 02/24/2016 13:59:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[fn_CheckValidFillingOfJDW](@wj_id int)
RETURNS int
AS
BEGIN
	DECLARE @Flag int = 0 -- Нулевое значение на выходе с функции означает отсутствие ошибок
	-- Проверка на наличие нулевых партий...
	IF NOT EXISTS(SELECT 1 FROM WorkJobsCekhs wjc WITH(NOLOCK) WHERE wj_id = @wj_id AND NumberOfParty = 0)
		SET @Flag= 3
	ELSE
		-- Проверка на наличие не нулевых партий
		IF EXISTS(SELECT 1 FROM WorkJobsCekhs wjc WITH(NOLOCK) WHERE wj_id = @wj_id AND NumberOfParty != 0)
		BEGIN
			-- 1 Проверка на отклонения в количестве по цехам в пределах одной партии, без учета нулевой группы
			IF EXISTS(SELECT 1 FROM WorkJobsCekhs WITH(NOLOCK) WHERE wj_id = @wj_id AND NumberOfParty != 0      GROUP BY NumberOfParty HAVING STDEV(wjc_kolvo) != 0)
				SET @Flag= 1
			ELSE
				BEGIN
					-- 2 Проверка на несоответствие количества в нулевой партии со всеми остальными в сумме..
					IF (SELECT SUM(f1) FROM (SELECT AVG(wjc_kolvo) as F1 FROM WorkJobsCekhs wjc WITH(NOLOCK) WHERE wj_id = @wj_id AND NumberOfParty != 0 
									GROUP BY NumberOfParty) a1) <>
						 (
							(SELECT SUM(wjc_kolvo) FROM WorkJobsCekhs wjc WITH(NOLOCK) WHERE wj_id = @wj_id AND NumberOfParty = 0)
							/
							(SELECT SUM(1) FROM WorkJobsCekhs wjc WITH(NOLOCK) WHERE wj_id = @wj_id AND NumberOfParty = 0)						
							)
						SET @Flag= 2
				END
		END	
	----------------------------------------------------------------------------------------------------------------
	RETURN @Flag
END


К сообщению приложен файл. Размер - 27Kb
24 фев 16, 12:42    [18856682]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
dartveider13,

ошибка про номер процедуры, а вы показываете функцию.

Под номером процедуры, скорее всего, имеется в виду необязательный номер
после имени процедуры, отделяемый от него точкой с запятой:
ProcName;N
Зачем вы туда N=0 подставляете?
24 фев 16, 12:49    [18856726]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
_djХомяГ
Guest
Может я ошибаюсь, но есть такая мутная штука версионность процедуры - одно и то же имя и нумерация
24 фев 16, 12:50    [18856734]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
_djХомяГ
Guest
И разная нумерация
24 фев 16, 12:52    [18856744]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
dartveider13
При этом гадила данной ошибкой функция в БД.
Функция не может давать такую ошибку.

Эта ошибка будет при вызове хранимой процедуры с указанием ее номера:
exec SomeProce;0 ...
24 фев 16, 12:55    [18856765]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
iap,

да вроде единичка стоит

К сообщению приложен файл. Размер - 123Kb
24 фев 16, 12:55    [18856768]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm,

вызов идет в коде C++

// Проверим корректность заполнения работ
	sp_CheckValidFilling->Parameters->FindParam("@wj_id")->Value = FWorkJobs->QWorkJobs->FieldByName("wj_id")->AsInteger;
	sp_CheckValidFilling->ExecProc();
24 фев 16, 12:56    [18856777]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
_djХомяГ
Guest
Это очевидно вызов процедуры
sp_CheckValidFilling->ExecProc();
Поднимите sp_help <имя объекта> и узнаете что это
24 фев 16, 12:58    [18856791]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
_djХомяГ
Это очевидно вызов процедуры
sp_CheckValidFilling->ExecProc();
Поднимите sp_help <имя объекта> и узнаете что это


Мммм а как поднять?
24 фев 16, 13:00    [18856804]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
_djХомяГ
Guest
Командой в SSMS например
Или посмотрите текст в SSMS по правой кнопки мыши
24 фев 16, 13:02    [18856824]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
_djХомяГ,

по sp_help. Подскажите что тут я должен увидеть?

К сообщению приложен файл. Размер - 20Kb
24 фев 16, 13:03    [18856834]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
dartveider13,

1. У вас изврат - вызов скалярной функции через exec. Но это к делу не относится.
2. Проблема чисто клиентская, ибо вызов формирует клиент.
3. Если на XP ошибка есть, а на 7 нет - смотрите какой провайдер прописан в строке подключения и сравните его версию на XP и 7.
24 фев 16, 13:16    [18856929]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm, ок сейчас буду копать в сторону провайдеров... Отпишусь как что-нибудь прояснится
24 фев 16, 13:24    [18856973]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm, провайдер в строке подключения "SQLOLEDB.1". Теперь я так понял надо по панелям управления полазить. Правильно копаю?
24 фев 16, 13:29    [18857016]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
dartveider13,

https://www.mssqltips.com/sqlservertip/2198/determine-which-version-of-sql-server-data-access-driver-is-used-by-an-application/
24 фев 16, 13:33    [18857048]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm, у меня вот этот. Пойду гляну у пользака какой стоит

К сообщению приложен файл. Размер - 49Kb
24 фев 16, 13:41    [18857101]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm, а там стоит просто SQLServer (более старый). Но опять же если я захочу поставить ей этот драйвер, на сайте мелкософта пишется что он подходит к тем у кого винда начинается с 7-ки
24 фев 16, 13:48    [18857149]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
Поставьте SNAC от SQL Server 2008 R2. Это последний, который можно установить на XP.
24 фев 16, 14:02    [18857254]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm, оке сейчас поищем
24 фев 16, 14:10    [18857310]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm, отдельно не скачивается? Надо тащить установщик клиенту?
24 фев 16, 14:15    [18857352]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
invm
Member

Откуда: Москва
Сообщений: 9404
https://www.microsoft.com/en-us/download/details.aspx?id=44272
Скачиваете sqlncli для x86.
24 фев 16, 14:27    [18857462]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
dartveider13
Member

Откуда: Омск
Сообщений: 731
invm, ооо премного благодарен. Сегодня уже не успею установить. Все уже домой ушли:) Завтра утром поставлю... В любом случае отпишусь как прошло
24 фев 16, 14:32    [18857496]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
MSSQLAndDotNet
Member

Откуда:
Сообщений: 10398
iap
dartveider13,

ошибка про номер процедуры, а вы показываете функцию.

Под номером процедуры, скорее всего, имеется в виду необязательный номер
после имени процедуры, отделяемый от него точкой с запятой:
ProcName;N
Зачем вы туда N=0 подставляете?

я извиняюсь
не удалось ничего нагуглить по этой теме
что за параметр такой и как он может пригодиться?

дайте тынц в документацию
спасибо
24 фев 16, 17:41    [18858809]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
MSSQLAndDotNet
Member

Откуда:
Сообщений: 10398
Сиквел сам что ли версии хранимок хранит?
24 фев 16, 17:43    [18858822]     Ответить | Цитировать Сообщить модератору
 Re: недопустимый номер процедуры (0)  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
MSSQLAndDotNet
Сиквел сам что ли версии хранимок хранит?

CREATE PROCEDURE dbo.test;1 @x INT
AS
    PRINT '1'
GO
CREATE PROCEDURE dbo.test;2 @x CHAR
AS
    PRINT '2'
GO

SELECT [object_id], [definition], procedure_number
FROM sys.numbered_procedures
WHERE [object_id] = OBJECT_ID('dbo.test')

UNION ALL

SELECT [object_id], [definition], 1
FROM sys.sql_modules
WHERE [object_id] = OBJECT_ID('dbo.test')
24 фев 16, 17:53    [18858876]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить