Я считаю, что вы должны использовать libname oledb
для подключения к SQL Server из SAS.Я могу повторить вашу проблему здесь: -
код SQL Server для генерации фиктивных данных
create table dbo.tbl (
tblId int identity(1,1) not null
constraint pk_tbl_tblId primary key,
bool bit not null,
)
go
insert into dbo.tbl(bool) values(0)
insert into dbo.tbl(bool) values(1)
код SAS с использованием OLEDB
libname imm oledb provider=sqloledb
properties=(
"Integrated Security"=SSPI
"Persist Security Info"=False
"Initial Catalog"=test
"Data Source"=localhost
);
proc print data=imm.tbl; run;
Распечатка: -
Obs tblId bool
1 1 0
2 2 -1
SAS-код с использованием PROC SQL
Похоже, использование PROC SQL должно решить вашу проблему.
proc sql noprint;
connect to sqlservr (
server='localhost'
database='test'
'Integrated Security'='SSPI'
'Persist Security Info'='False'
);
create table test as
select *
from connection to sqlservr (
select * from dbo.tbl
);
disconnect from sqlservr;
quit;
proc print data=test; run;
Распечатка: -
Obs tblId bool
1 1 0
2 2 1