![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при исполнении MSSQL-скрипта.. [MSSQL]
Digitman © (2004-06-11 12:39:00)С MSSQL2000-сервером и синтаксисом евойных скриптов я практически не знаком, просто не доводилось до сей поры (и сто лет бы еще не довелось), но вот таки пришлось столкнуться с проблемой, которую нужно бы преодолеть, особо не вникая в подробности..
суть проблемы :
при прогоне нижеприведенного скрипта ODBC-tracer зафиксировал отказ сервера
DIAG [42000]
[Microsoft][ODBC SQL Server Driver][SQL Server]
Must declare the variable '@PERIOD'. (137)
"Create procedure _1sp_CJ7287_UpdateFF(@IDS CHAR(9), @Date DATETIME, @ID INTEGER, @Mode INTEGER) AS
SET NOCOUNT ON
DECLARE @FFStr CHAR(255)
DECLARE @StartDate DATETIME
DECLARE @Period CHAR(9)
DECLARE @FF0 CHAR(9)
EXECUTE _1sp_GetBeginOfPeriod @Date, 'M', @StartDate OUTPUT
SELECT @StartDate=DATEADD( dd, 0, @StartDate )
IF @StartDate>@Date BEGIN
SELECT @StartDate=DATEADD( dd, -1, @StartDate )
EXECUTE _1sp_GetBeginOfPeriod @StartDate, 'M', @StartDate OUTPUT
END
SELECT @Period=CONVERT( CHAR(8), @StartDate, 112 )+'M'
IF @Mode=2 or @Mode=1
DECLARE Cur_CJ7287 CURSOR FOR SELECT PERIOD,FF6026 FROM CJ7287 WHERE IDS=@IDS FOR UPDATE OF FF6026
ELSE IF @Mode=0 BEGIN
IF @Date>'17530101'
DECLARE Cur_CJ7287 CURSOR FOR SELECT PERIOD,FF6026 FROM CJ7287 WHERE IDS=@IDS AND PERIOD>=@Period FOR UPDATE OF FF6026
ELSE
DECLARE Cur_CJ7287 CURSOR FOR SELECT PERIOD,FF6026 FROM CJ7287 WHERE IDS=@IDS FOR UPDATE OF FF6026
END
OPEN Cur_CJ7287
FETCH NEXT FROM Cur_CJ7287 INTO @Period,@FF0
WHILE @@FETCH_STATUS=0 BEGIN
SELECT @StartDate=SUBSTRING(@Period,1,8)
SELECT @FF0=SP6026 FROM SC6049(NOLOCK) WHERE ID=@IDS
UPDATE CJ7287 SET FF6026=ISNULL(@FF0,' 0 ') WHERE CURRENT OF Cur_CJ7287
FETCH NEXT FROM Cur_CJ7287 INTO @PERIOD, @FF0
END
CLOSE Cur_CJ7287
DEALLOCATE Cur_CJ7287"
Господа, выручайте, вразумите меня, тундру, где здесь что не так ? C какого перепугу кто-то там, с т.з. сервера, якобы должендекларировать переменную @PERIOD, если я своими глазами вижу, что эта декларация в теле SP присутствует ? Или скриптовый движок сервера регистрочувствителен в отношении идентификаторов ?
Ega23 (2004-06-11 19:22:00) [1]А стоило ли это того? :-)
Стоило. На объектах надо с 7-го на 2000-ый сервер переходить.
Бир абасы (2004-06-11 18:38:00) [2]2 Ega23 © (11.06.04 18:31) [34]
А стоило ли это того? :-)
Ega23 (2004-06-11 18:31:00) [3]к сожалению установленному серверу поменять коллэйт нельзя, как и другим созданным объектам, например БД или таблицы.
придётся всё переставлять и пересоздавать.
Можно. Но очень сложно. У меня шеф месяца 2 бился, пока не изватился через задницу, но поменял.
User_Name (2004-06-11 16:56:00) [4]Задайте этот вопрос на SQL.ru - там точно должны ответить.
ИМХО - проблема именно в том, про что написала
Oksana © (11.06.04 13:02) [3]
P.S. По крайней мере у меня (MSSQL 200 SP 3) такие вещи не проходят
Fiend (2004-06-11 16:53:00) [5]кстати насчёт "нехочу заморачиваться". там всё очень просто и интуитивно ясно буквально пару кликом мышкой
Бир абасы (2004-06-11 16:53:00) [6]откуда ж мне знать ? я вижу в реестре соотв.параметр, который, по моему представлению, сервер-сервис считывает при старте ...
Не сменишь ты collation у установленного сервера. Это мое IMNSHO.
А также есть определенное подозрение, что мы лечим последствия, а не причину. Ты писал " когда формирует инф.базу на основе метаданных некоей конфигурации". Так вот, лучше ты опиши последовательно все свои действия: как ты создаешь эту базу, на основе метаданных какой конфигурации и т.д.???
Уж не первый день я с этим хозяйством работаю, но такой "попандос" не имел ни разу...
Fiend (2004-06-11 16:50:00) [7]то Digitman
к сожалению установленному серверу поменять коллэйт нельзя, как и другим созданным объектам, например БД или таблицы.
придётся всё переставлять и пересоздавать.
но я бы всё попробовал выполнить скрипт через "РОДНЕЙШИЕ" серверу утилиты. ибо если в нём выполлняется а где то нет - значит проблема не в скрипте!
Digitman (2004-06-11 16:45:00) [8]
> Бир абасы (11.06.04 16:20) [28]
> Вообще мутно все это как-то...
> В одном месте ты пишешь, что работаешь с 21-ым релизом версии
> 7.7, в другом, что "8-я платформа автоматически установила...".
про 8-ку я, вероятно, упомянул всуе...
из проф.любопытства это - некое время назад ставил 8-ку и смотрел, что за "фрукт" - надо же хоть как-то держать себя в курсе "мировых событий" на поприще "шахматных интерпретаторов")... в т.ч. и сей факт для себя отметил там, насчет коллэйта ... оттуда ноги и растут ...
не "работаю" я ни с 21-м релизом ни с каким бы то ни было иным -мне кажется, ясно тему осветил..
> где у тебя Cyrillic_General_CI_AS и где Cyrillic_General_CS_AS?
на дан.момент первое - в коллейте собственно инф.базы, второе - в коллейте сервера
> каким макаром ты собираешься менять collation у установленного
> сервера?
откуда ж мне знать ? я вижу в реестре соотв.параметр, который, по моему представлению, сервер-сервис считывает при старте ...
если механика иная - просвети уж и ты меня, бестолкового ? ...
Бир абасы (2004-06-11 16:20:00) [9]Вообще мутно все это как-то...
В одном месте ты пишешь, что работаешь с 21-ым релизом версии 7.7, в другом, что "8-я платформа автоматически установила...".
Опять-таки где у тебя Cyrillic_General_CI_AS и где Cyrillic_General_CS_AS??? Хотя это тут роли не должно играть, так как в обоих случаях стоит AS, что и должно влиять на именование переменных и т.д.
Да, кстати, каким макаром ты собираешься менять collation у установленного сервера? Просвети.
Petr V. Abramov (2004-06-11 16:19:00) [10]А все ж попробовать дозвониться в чудесную :) техподдержку. В Москве это
иногдаудается, у меня пару раз получалось. А так репу можно очень долго чесать, а потом окажется, что чесали не там :)
Digitman (2004-06-11 15:59:00) [11]
> Бир абасы (11.06.04 15:53) [25]
> Cyrillic_General_CI_AS
попробовал ... результат - тот же ...
видимо не в коллейте дело или иное значение следует попробовать ... пока еще ума не приложу, какое ...
Бир абасы (2004-06-11 15:53:00) [12]Cyrillic_General_CI_AS
Digitman (2004-06-11 15:46:00) [13]
> bushmen © (11.06.04 14:55) [22]
так, процесс пошел вроде бы ...
как изменить коллэйт сервера, я знаю
вопрос : какие варианты коллэйта следует попробовать ?
Digitman (2004-06-11 15:18:00) [14]
> Fiend © (11.06.04 14:47) [19]
есть, конечно ..
но - еще раз повторюсь - нет ни малейшего желания (да и времени) "заморачиваться" изучением инстр.средств и пр. и пр. ... задача и проблема в ней - буквально разовая ... мне просто необходимо понять, откуда ноги ростут у проблемы ... далее я соображу и приму решение, не распыляясь на тонкости ...
ибо IB/FB-серверы - родные, мне не жалко ни сил ни времени на "раскопки" в этой среде, случись что .. а здесь - иная ситуация : попросили вот, пообещал людям (рву волосы на многострадальной своей лысине и посыпаю ее пеплом, что согласился эт дело провернуть !) и неприятно врюхался (ну как еще сказать ?).. скорее всего, конечно - от незнания ни этой дурной платформы ни мелкомягкого сиквел-сервера
вот-с, примерно так хотелось бы это сделать ...
> Если есть то для эксперимента проверки коллэйта возьми этот
> скрипт, подключись к БД и сделай Parse(Ctrl+F5). Если проблема
> с коллэйтом существует, то он выдаст ту же ошибку.
да, спасибо ... у меня уже мелькнула эта мысль ... скорее всего, если сейчас с коллэйтом дело в гору не пойдет, так и сделаю .. как бы ни не хотелось мне заниматься этим(
> может проблема в драйвере ОДБЦ?
> 1С никаких рекомендаций по этому поводу не даёт? или они
> сами ставят вместе с собой драйвер?
одибиси-драйвер, разумеется, одноэсом не поставляется, эти ушлые парни всегда кивали и кивать будут на Майкрософт, ибо под майкрософтовскую дудку и пляшут всю жизнь .. при этом, как я понял, привнося в свое зависимое от майкрософта ПО соверженно дурацкую и нелогичную "оригинальность" ... ну да не будем о том , мне, ч.г., по барабану : задышала бы вся эта петрушка, а дальше - трава не расти)
> bushmen © (11.06.04 14:52) [20]
что-то не въеду я пока, каким образом мне сменить коллэйт сервера ..
в св-вах сервера в закладке General это св-во якобы не позволяет редактирование ... либо я не вижу соотв. иной закладки, где это разрешено ... мне, пожалуй, проще в инициализационных данных это св-во поменять, знать бы только, где они : в реестре вроде бы в явном виде не нахожу ..
bushmen (2004-06-11 14:55:00) [15]>я этого магического продукта к счастью не использую
Думаю, что вряд ли напишут программу, в которой сначала создают хранимую процедуру (причем, постоянно одного и того же содержания), а потом ее запускают на выполнение :)))
Fiend (2004-06-11 14:53:00) [16]я говорю это из слов автора. Раз он сказал, значит не может, т.к. я этого магического продукта к счастью не использую
bushmen (2004-06-11 14:52:00) [17]>Fiend ©
Да неужели? А что, разве после установки 1C трудно зайти в Enterprise Manager и ручками подправить ?
Fiend (2004-06-11 14:47:00) [18]то Digitman:
Сергей, скажи а вообще у тебя есть клиентские утилиты от сервера?
Если есть то для эксперимента проверки коллэйта возьми этот скрипт, подключись к БД и сделай Parse(Ctrl+F5). Если проблема с коллэйтом существует, то он выдаст ту же ошибку.
Fiend (2004-06-11 14:43:00) [19]та не может он скрипт поправить!!! чё не видно?! открытым же текстом пишет человек.
bushmen (2004-06-11 14:40:00) [20]>ну почему же ? прочел достаточно внимательно ..
Я и говорю, что не внимательно. После вопроса про Collation я посоветовал переменную @PERIOD переписать в соответствии с ее объявлением - @Period.