powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ANSI_NULLS и ANSI_DEFAULTS
25 сообщений из 37, страница 1 из 2
ANSI_NULLS и ANSI_DEFAULTS
    #32043041
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго утра, Дамы и Господа!
Не подскажет ли кто-нибудь, в чем тут проблема.
Пишу 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
ANSI_NULLS и ANSI_DEFAULTS
    #32043042
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка:
...
SET ANSI_NULLS ON
GO
SET ANSI_DEFAULTS ON
GO
...
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043045
nik_nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запусти QA
Установи эти установки перед созданием процедуры, т.е.
SET ANDI_NULLS ON
GO
SET ANDI_DEFAULTS ON
GO
create procedure ...
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043046
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, извините, поторопился с вопросом; разобрался сам. С утра еще тутумкалка не включилась... :)
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043092
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе, самонадеянное заявление, видать, тутумкалка вообще не тутумкает.. :(
Вот такой скрипт:
...

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
ANSI_NULLS и ANSI_DEFAULTS
    #32043107
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, похоже, это совершенно не мой день! "Звезды Сад-ад-Забих..." не просто встали сегодня неблагоприятно для меня, а еще и показывают сверху различные интимные места :) Вот что вылечило (из 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
ANSI_NULLS и ANSI_DEFAULTS
    #32043110
nik_nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти setы пишешь перед созданием процедуры в QA, а в процедуре их больше не указываешь.
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043211
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ANSI_NULLS и ANSI_DEFAULTS
    #32043252
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если выполнять процедуры друг за другом, но с задержкой (waitfor delay), мож получится?
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043286
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй фокспрошный драйвер...
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043312
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ... у фокспрошного драйвера есть параметр 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
ANSI_NULLS и ANSI_DEFAULTS
    #32043411
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Утро доброе, Уважаемые!

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
ANSI_NULLS и ANSI_DEFAULTS
    #32043445
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попытался вылечить 2-ю бяку с помощью "SET DATEFORMAT dmy" - не вышло... :( Неужто триггер надо рисовать? Уважаемые, поможите, плиз...
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043456
Фотография boogier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. перекодировка
2. попробуй datetime вместо smalldatetime
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043457
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. а как? (прости за наверняка глупый вопрос, но после 7 лет асма на сиквел с дельфой тяжело переползать...)
2. т.е. предлагаешь поменять поле в таблице на сервере с smalldatetime на datetime?
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043479
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в строчке Collate=Russian; отставил?
если да то нужно русский мдак поставить....
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043497
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Collate=Russian оставил, конечно...
а МДАК на сервер ставить надо?
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043515
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кодировка в дбф какая?(866,1251)
попробуй в одбс прилинковать любой файл и в дополнительных параметрах посмотреть ставится ли коллйт для русского?
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043528
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- кодировка 866
- коллайт для русского ставится
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043544
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня кодировка тож 866 и все ок...
если нужны null в строке подключения есть одноименный параметр ...
ну про коллейт.... покажи ка строчку как вызываеш .. всю...
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043560
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот:

Код: 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
ANSI_NULLS и ANSI_DEFAULTS
    #32043567
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а колейт базы у тебя какой?
попробуй кастить в юникод текстовые поля...
может поможет COLLATE...
...
Рейтинг: 0 / 0
ANSI_NULLS и ANSI_DEFAULTS
    #32043574
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>а колейт базы у тебя какой?
Смотрел тут : NewBase properties -> General -> Collation Name (правильно?) - "Cyrillic_General_CI_AS"

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


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