[freetds] setting connection options in freebcp
Constantin Vasilyev
vasilyev at ncbi.nlm.nih.gov
Wed Sep 20 15:30:44 EDT 2006
Subject changed from "FIRE_TRIGGERS hint"
> I wonder how Microsoft and Sybase deal with that in
> their utilities?
For MS SQL bcp the problem is not solved. The only connection option it
allows to control is QUOTED_IDENTIFIER (-q parameter). It also sets some
options to ON by default, but not ARITHABORT, which makes it impossible
to bcp out of indexed view while taking indexes in account. I'm sure
freebcp can do better than native client here (-;
> Do you have an example of a session setting that
> must be in a separate batch? Because other than that, "queryout"
> should do the trick.
Here's an example which illustrates the problem (for MS SQL):
use testdb
go
-- create base table
set ansi_nulls on
go
create table foo(id int identity primary key, data int not null)
go
-- create indexed view
set ansi_nulls, quoted_identifier on
go
create view bar with schemabinding as
select data, count_big(*) cnt_id from dbo.foo group by data
go
set concat_null_yields_null, ansi_warnings, ansi_padding, arithabort on
create unique clustered index uci_data on bar(data)
go
> freebcp "select * from testdb.dbo.bar with(noexpand)" queryout
/tmp/bar.bcp -c -S ... -U ... -P ...
Msg 1934, Level 16, State 1
Server 'MSSQL0', Line 1
SELECT failed because the following SET options have incorrect
settings: 'ANSI_NULLS., QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL,
ANSI_WARNINGS, ANSI_PADDING, ARITHABORT'.
Msg 20018, Level 5
General SQL Server error: Check messages from the SQL Server.
dbsqlexec failed
NOEXPAND hint here required to take advantage of the index created on a
view. See article "Using Indexes on Views" here
http://doc.ddart.net/mssql/sql2000/html/createdb/cm_8_des_06_0l9v.htm
or in Books OnLine for more details.
Adding "SET ANSI_NULLS, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL,
ANSI_WARNINGS, ANSI_PADDING, ARITHABORT ON" into the query doesn't help
much.
James K. Lowden wrote:
> Constantin Vasilyev wrote:
>
>>Could it be added, then. I'm not sure if this worth submitting the
>>patch.
>>
>>And another idea. Sometime (like in case of pulling data out of indexed
>>views) database connection which freebcp opens requires some options
>>(like ANSI_NULLS) to be set before fetching the data. Some of those
>>options work if submitted within the same batch with SELECT statement,
>>so queryout mode may be used for them, but some work only if placed in
>>separate batch. For such cases it might be useful to add an option to
>>which allows to run some commands on the server (or simply set
>>particular options for the connection) before pumping the data.
>
>
> Good ideas, both. I wonder how Microsoft and Sybase deal with that in
> their utilities? Do you have an example of a session setting that must
> be in a separate batch? Because other than that, "queryout" should do the
> trick.
>
> --jkl
> _______________________________________________
> FreeTDS mailing list
> FreeTDS at lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds
More information about the FreeTDS
mailing list