Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ANSI_NULLS и ANSI_DEFAULTS / 25 сообщений из 37, страница 1 из 2
14.08.2002, 08:34:33
    #32043041
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Доброго утра, Дамы и Господа!
Не подскажет ли кто-нибудь, в чем тут проблема.
Пишу SP, где среди прочего есть такая строка:
Код: plaintext
1.
SELECT *
FROM OPENROWSET('MSDASQL', 'DRIVER={Microsoft dBase Driver (*.dbf)}', 'select * from \\main\net\coptt\h10\h10a.dbf') AS Rowset_1

EM громко ругается и говорит, что необходимо "включить" опции ANSI_NULLS и ANSI_DEFAULTS. Знаю, что нужно использовать SET, но точно не знаю, где и как его в SP правильно расставить. Делаю так
SET ANDI_NULLS ON
GO
SET ANDI_DEFAULTS ON
GO
дальше вышенаписанный код
GO
и вот тут EM выдает что-то типа "неправильный объект Rowset_1". Как лечить? Поможите, плиз....
...
Рейтинг: 0 / 0
14.08.2002, 08:36:02
    #32043042
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Поправка:
...
SET ANSI_NULLS ON
GO
SET ANSI_DEFAULTS ON
GO
...
...
Рейтинг: 0 / 0
14.08.2002, 08:51:29
    #32043045
nik_nik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Запусти QA
Установи эти установки перед созданием процедуры, т.е.
SET ANDI_NULLS ON
GO
SET ANDI_DEFAULTS ON
GO
create procedure ...
...
Рейтинг: 0 / 0
14.08.2002, 08:54:05
    #32043046
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Господа, извините, поторопился с вопросом; разобрался сам. С утра еще тутумкалка не включилась... :)
...
Рейтинг: 0 / 0
14.08.2002, 11:17:56
    #32043092
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Хе, самонадеянное заявление, видать, тутумкалка вообще не тутумкает.. :(
Вот такой скрипт:
...

SET ANSI_NULLS ON
GO
SET ANSI_DEFAULTS ON
GO

TRUNCATE TABLE H10a

INSERT INTO H10a (HH, CEHA, KEI, HAIM, D_OBR, TNARM, CEHA_C)
SELECT a.HH, a.CEHA, a.KEI, a.HAIM, a.D_OBR, a.TNARM, a.CEHA_C
FROM OPENROWSET('MSDASQL', 'DRIVER={Microsoft dBase Driver (*.dbf)}', 'select * from \\main\net\coptt\h10\h10a.dbf') as a
GO

Из QA все работает, записи вставляются, но при одном условии (приготовились смеяться) - если ЗАКОММЕНТИРОВАТЬ SETы! Если нет, то не вставляются! Wow!! И EM подвисать начинает... Закроешь QA - все нормально... Может, кто сталкивался, а?
...
Рейтинг: 0 / 0
14.08.2002, 11:43:20
    #32043107
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Нет, похоже, это совершенно не мой день! "Звезды Сад-ад-Забих..." не просто встали сегодня неблагоприятно для меня, а еще и показывают сверху различные интимные места :) Вот что вылечило (из QA):

SET ANSI_NULLS ON
GO
SET ANSI_DEFAULTS ON
GO

TRUNCATE TABLE H10a
GO

BEGIN TRANSACTION
INSERT INTO H10a (HH, CEHA, KEI, HAIM, D_OBR, TNARM, CEHA_C)
SELECT a.HH, a.CEHA, a.KEI, a.HAIM, a.D_OBR, a.TNARM, a.CEHA_C
FROM OPENROWSET('MSDASQL', 'DRIVER={Microsoft dBase Driver (*.dbf)}', 'select * from \\main\net\coptt\h10\h10a.dbf') as a
COMMIT TRANSACTION
GO

Но однако ж, так и не понял, как запихнуть в SP эти самые злополучные SETы? Если я правильно понимаю, то необходимо создать SP, в ней прописать оба Setа, так?, а затем в этой же процедуре создать новую, и в ней уже рисовать вышеуказанный код. Если я ошибаюсь, поправьте меня, плиз...
...
Рейтинг: 0 / 0
14.08.2002, 11:46:51
    #32043110
nik_nik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Эти setы пишешь перед созданием процедуры в QA, а в процедуре их больше не указываешь.
...
Рейтинг: 0 / 0
14.08.2002, 15:30:29
    #32043211
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
nik_nik, Вы - гений!! Мое СПАСИБО не знает границ!! Все получилось! Но есть одна закавыка. Насоздавал по Вашему способу в QA 7 штук SP приблизительно одинаково вида, типа

CREATE PROCEDURE dbo.CopyH34a
AS

TRUNCATE TABLE H34a

BEGIN TRANSACTION

INSERT INTO H34a (IZD, ZAKAZ, HAIM, HAIM1, PEO, KTO, KTO1, PCIZD, RAZ_PL, D_OBR, TNARM, NPP, KK, HAIM_SB)
SELECT a.IZD, a.ZAKAZ, a.HAIM, a.HAIM1, a.PEO, a.KTO, a.KTO1, a.PCIZD, a.RAZ_PL, a.D_OBR, a.TNARM, a.NPP, a.KK, a.HAIM_SB
FROM OPENROWSET('MSDASQL', 'DRIVER={Microsoft dBase Driver (*.dbf)}', 'select * from \\main\net\coptt\h10\h34a.dbf') as a

COMMIT TRANSACTION

GO

отличаются только названием таблиц и наборами полей. По отдельности каждая работает как часы. Ну, естественно, горю желанием проверить все 7 штук сразу (очень суммарное время выполнения интересует). И тут закавыка: любая 1-я процедура проходит, последующие - нет:

Server: Msg 7399, Level 16, State 1, Procedure CopyH34a, Line 10
OLE DB provider 'MSDASQL' reported an error. The provider did not give any information about the error.

Не подскажете, уважаемые, под какой ногой грабли?

P.S. nik_nik, простите, РБ - это часом не "Республика Беларусь"?
...
Рейтинг: 0 / 0
14.08.2002, 16:52:41
    #32043252
boogier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
а если выполнять процедуры друг за другом, но с задержкой (waitfor delay), мож получится?
...
Рейтинг: 0 / 0
14.08.2002, 17:38:42
    #32043286
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
используй фокспрошный драйвер...
...
Рейтинг: 0 / 0
14.08.2002, 18:15:47
    #32043312
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
ЗЫ... у фокспрошного драйвера есть параметр Exclusive...

Код: plaintext
OPENROWSET('MSDASQL','Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=Z:\BUH\BEST4904\ENERGY\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Russian;Null=No;Deleted=Yes;','SELECT main.dataoper, main.dt_schet, main.summa FROM main WHERE main.dt_schet LIKE "Н%"')
...
Рейтинг: 0 / 0
15.08.2002, 09:24:52
    #32043411
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Утро доброе, Уважаемые!

2MiCe

спасибо за совет, благодаря ему процедуры все-таки начали выполняться пачками, но вылезла новая бяка:
1. поля с кириллицей таблиц на сервере стали содержать поля с суахили :)
2. если в таблице-источнике есть поля даты с Null, то:

Server: Msg 298, Level 16, State 1, Procedure CopyT40c, Line 10
The conversion from datetime data type to smalldatetime data type resulted in a smalldatetime overflow error.

Чем лечится?
...
Рейтинг: 0 / 0
15.08.2002, 11:11:05
    #32043445
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
попытался вылечить 2-ю бяку с помощью "SET DATEFORMAT dmy" - не вышло... :( Неужто триггер надо рисовать? Уважаемые, поможите, плиз...
...
Рейтинг: 0 / 0
15.08.2002, 11:34:26
    #32043456
boogier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
1. перекодировка
2. попробуй datetime вместо smalldatetime
...
Рейтинг: 0 / 0
15.08.2002, 11:39:30
    #32043457
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
1. а как? (прости за наверняка глупый вопрос, но после 7 лет асма на сиквел с дельфой тяжело переползать...)
2. т.е. предлагаешь поменять поле в таблице на сервере с smalldatetime на datetime?
...
Рейтинг: 0 / 0
15.08.2002, 12:25:34
    #32043479
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
в строчке Collate=Russian; отставил?
если да то нужно русский мдак поставить....
...
Рейтинг: 0 / 0
15.08.2002, 13:05:04
    #32043497
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Collate=Russian оставил, конечно...
а МДАК на сервер ставить надо?
...
Рейтинг: 0 / 0
15.08.2002, 13:29:42
    #32043515
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
а кодировка в дбф какая?(866,1251)
попробуй в одбс прилинковать любой файл и в дополнительных параметрах посмотреть ставится ли коллйт для русского?
...
Рейтинг: 0 / 0
15.08.2002, 13:51:56
    #32043528
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
- кодировка 866
- коллайт для русского ставится
...
Рейтинг: 0 / 0
15.08.2002, 14:17:32
    #32043544
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
у меня кодировка тож 866 и все ок...
если нужны null в строке подключения есть одноименный параметр ...
ну про коллейт.... покажи ка строчку как вызываеш .. всю...
...
Рейтинг: 0 / 0
15.08.2002, 14:40:34
    #32043560
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
вот:

Код: plaintext
1.
2.
3.
4.
INSERT INTO H13a (KEI, HAIM, HAIMC, TNARM, D_OBR)
SELECT b.KEI, b.HAIM, b.HAIMC, b.TNARM, b.D_OBR
FROM 
OPENROWSET('MSDASQL','Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=\\main\net\coptt\h10\;SourceType=DBF;Exclusive=No; Null=Yes; Collate=Russian;','SELECT * FROM H13a') As b
...
Рейтинг: 0 / 0
15.08.2002, 14:47:21
    #32043567
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
а колейт базы у тебя какой?
попробуй кастить в юникод текстовые поля...
может поможет COLLATE...
...
Рейтинг: 0 / 0
15.08.2002, 14:57:51
    #32043574
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
>>а колейт базы у тебя какой?
Смотрел тут : NewBase properties -> General -> Collation Name (правильно?) - "Cyrillic_General_CI_AS"

>>попробуй кастить в юникод текстовые поля...
в OPENROWSETe я смогу это сделать? Или еще как-нить, но только не меняя ничего в таблице-источнике?...
...
Рейтинг: 0 / 0
15.08.2002, 15:08:54
    #32043582
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
я имею ввиду...
Код: plaintext
1.
2.
3.
SELECT b.KEI, CAST(b.HAIM as nvarchar( 20 ) ), b.HAIMC, b.TNARM, b.D_OBR
FROM 
OPENROWSET('MSDASQL','Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=\\main\net\coptt\h10\;SourceType=DBF;Exclusive=No; Null=Yes; Collate=Russian;','SELECT * FROM H13a') As b

если не поможет подключи как линкед сервер и поиграйся в настройках с колятион (совместим,удаленный)....
...
Рейтинг: 0 / 0
15.08.2002, 15:39:48
    #32043614
manowar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ANSI_NULLS и ANSI_DEFAULTS
Вот честно тебе скажу - удивляюсь сильно: пока использовал dBase-ный драйвер, все было пучком, как фокспрошный начал юзать - так "вот тебе бабушка и юрьев день..." :) ! Но самое главное - мне эти процедуры с клиента запускать надо (Дельфи 5), так с фокспрошныйм драйвером вроде как запускаются, а с dBase-ким - нет, "Дисковая или сетевая ошибка" пишет! Не разъяснишь, в чем дело мож быть?
А с линкед сервером сейчас пробовать буду, но что-то мне подсказывает, что и это всех траблов не вылечит...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ANSI_NULLS и ANSI_DEFAULTS / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]