Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при исполнении MSSQL-скрипта.. [MSSQL]


Страницы:   1 2

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.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо