Спасибо.
Думаю, нам придётся использовать явное указание в опциях версию нативного клиента.
Найдено 5 результатов
- Чт 28 апр 2016 11:39
- Форум: SQL Server Data Access Components
- Тема: TMSQuery.Options.AutoPrepare при работе с временными таблицами
- Ответы: 6
- Просмотры: 16930
- Ср 27 апр 2016 10:06
- Форум: SQL Server Data Access Components
- Тема: TMSQuery.Options.AutoPrepare при работе с временными таблицами
- Ответы: 6
- Просмотры: 16930
Re: TMSQuery.Options.AutoPrepare при работе с временными таблицами
Ранее мы использовали SDAC версии 6.0.1 и такой ошибки при работе с 2014 сервером не возникало.
- Ср 27 апр 2016 06:24
- Форум: SQL Server Data Access Components
- Тема: TMSQuery.Options.AutoPrepare при работе с временными таблицами
- Ответы: 6
- Просмотры: 16930
Re: TMSQuery.Options.AutoPrepare при работе с временными таблицами
Код: Выделить всё
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
idArray: array [0..9] of Variant;
begin
{MSQuery1.SQL.Text := if object_id('TempDb..#zzId') is not null drop table #zzId
create table #zzId
(
inId int
)
}
MSQuery1.ExecSQL; // Создание временной таблицы
for i := 0 to 5 do
idArray[i] := i;
for i := 6 to 9 do
idArray[i] := null;
MSQuery2.Options.AutoPrepare := true; // <<<<<<<<<<<
for i := 0 to 9 do
MSQuery2.ParamByName('Id_' + IntToStr(i + 1)).Value := idArray[i];
{ Вызов процедуры вставки
MSQuery2.SQL.Text := exec dbo.pr_ZZPutId
@in1 = :Id_1,
@in2 = :Id_2,
@in3 = :Id_3,
@in4 = :Id_4,
@in5 = :Id_5,
@in6 = :Id_6,
@in7 = :Id_7,
@in8 = :Id_8,
@in9 = :Id_9,
@in10 = :Id_10
}
MSQuery2.Execute;
end;
- Ср 27 апр 2016 06:17
- Форум: SQL Server Data Access Components
- Тема: TMSQuery.Options.AutoPrepare при работе с временными таблицами
- Ответы: 6
- Просмотры: 16930
RE: TMSQuery.Options.AutoPrepare при работе с временными таблицами
Скрипт создания временной таблицы:
Скрипт процедуры для вставки во временную таблицу:
Код: Выделить всё
if object_id('TempDb..#zzId') is not null drop table #zzId
create table #zzId
(
inId int
)
Код: Выделить всё
if object_id('dbo.pr_ZZPutId', 'P') is not null drop procedure dbo.pr_ZZPutId
go
create procedure dbo.pr_ZZPutId
(
@in1 integer = null,
@in2 integer = null,
@in3 integer = null,
@in4 integer = null,
@in5 integer = null,
@in6 integer = null,
@in7 integer = null,
@in8 integer = null,
@in9 integer = null,
@in10 integer = null,
)
with encryption,
execute as owner
as
insert into #zzId(inId) select @in1
insert into #zzId(inId) select @in2
insert into #zzId(inId) select @in3
insert into #zzId(inId) select @in4
insert into #zzId(inId) select @in5
insert into #zzId(inId) select @in6
insert into #zzId(inId) select @in7
insert into #zzId(inId) select @in8
insert into #zzId(inId) select @in9
insert into #zzId(inId) select @in10
go
- Пн 25 апр 2016 12:56
- Форум: SQL Server Data Access Components
- Тема: TMSQuery.Options.AutoPrepare при работе с временными таблицами
- Ответы: 6
- Просмотры: 16930
TMSQuery.Options.AutoPrepare при работе с временными таблицами
MS SQL Server 2014
Имеется хранимая процедура, посредством которой происходит вставка во временную таблицу.
При включенной опции происходит ошибка "Не удалось определить метаданные, поскольку инструкция "insert into #zzId(inId) select @in1" в процедуре "pr_ZZPutId" использует временную таблицу."
При работе с 2008 сервером подобной ошибки не возникает.
Имеется хранимая процедура, посредством которой происходит вставка во временную таблицу.
При включенной опции происходит ошибка "Не удалось определить метаданные, поскольку инструкция "insert into #zzId(inId) select @in1" в процедуре "pr_ZZPutId" использует временную таблицу."
При работе с 2008 сервером подобной ошибки не возникает.