Sql server 如何将SAS创建的表移动到sql server中的其他文件组

Sql server 如何将SAS创建的表移动到sql server中的其他文件组,sql-server,sas,Sql Server,Sas,我们有一个过程,在SAS中生成一个表,我们使用SAS生成的表在SQL Server中创建一个表,但是,该表是在默认文件组上创建的,但是由于空间限制,我需要更改代码以指定需要在其中创建它的不同文件组。在SAS上编写的代码如下(如下所示),DBO.TBL_A是SAS创建的表,DBO.TBL是要在SQL server中创建的表。我尝试做的是在下面添加一行代码,以指定我希望添加到的文件组,但SAS给了我一个错误(参见pic),我对SAS不是很专业,我不确定这行代码为什么不起作用。我错过了什么 CREAT

我们有一个过程,在SAS中生成一个表,我们使用SAS生成的表在SQL Server中创建一个表,但是,该表是在默认文件组上创建的,但是由于空间限制,我需要更改代码以指定需要在其中创建它的不同文件组。在SAS上编写的代码如下(如下所示),DBO.TBL_A是SAS创建的表,DBO.TBL是要在SQL server中创建的表。我尝试做的是在下面添加一行代码,以指定我希望添加到的文件组,但SAS给了我一个错误(参见pic),我对SAS不是很专业,我不确定这行代码为什么不起作用。我错过了什么

CREATE TABLE DBO.TBL[![enter image description here][1]][1]
AS
SELECT 
  input(&varFileDate, BEST22.) as FileDate  ,
  TRIM(SSN) as SSN              , 
  ExmDescription                , 
  Status                        ,
  ScaledScore                   ,
  ExamDate          
  FROM DBO.TBL_A
  ORDER BY SSN; 

-- I tried the following

CREATE TABLE DBO.TBL
AS
SELECT 
  input(&varFileDate, BEST22.) as FileDate  ,
  TRIM(SSN) as SSN              , 
  ExmDescription                , 
  Status                        ,
  ScaledScore                   ,
  ExamDate          
  FROM DBO.TBL_A
  ORDER BY SSN
  ON [STAGING_DATA_FG02] WITH (DATA_COMPRESSION = PAGE)

我在[STAGING_DATA_FG02]上添加了(DATA_COMPRESSION=PAGE);在紧接着会议之前;但这行不通


假设libref DBO是到远程数据库的连接。也许是这样的

libname dbo odbc .... ;
如果要告诉它在数据库中的其他位置创建新表,可以使用dataset选项

create table dbo.tbl (schema='STAGING_DATA_FG02') ....
否则,使用显式传递来使用本机SQL语法生成表。如果源和目标都在该数据库中,那么这可能是最好的选择,因为根本不需要将数据移动到SAS

proc sql;
  connect using dbo ;
  execute by dbo (
     ... your remote database code goes here ...
  );

这是因为这在SAS中不是有效的SQL语法。您正在尝试在SQL中的其他架构或位置中创建表吗?如果是这样,这意味着使用
libname
语句更改SAS中的输出库。create语句末尾的[STAGING\u DATA\u FG02]上带有(DATA\u COMPRESSION=PAGE)的
是无效的SAS语法。如果有要传递到远程数据库的选项,则可以使用目标数据集名称(
DBO.TBL
)上的数据集选项传递这些选项。否则,首先使用pass-thru SQL(
execute
PROC-SQL中的语句)创建表,然后使用SQL INSERT或PROC APPEND。因此,我不懂SAS,我主要使用TSQL,但据我所知,这个过程仅在SAS上创建DBO.TBL_,然后使用上面的脚本创建SQL Server。问题是,它在默认文件组上创建它。我需要指定一个具有更多空间的不同文件组。在SAS程序中,我可以在哪里做这件事并不取决于libref
DBO
是什么。如果它是到远程数据库的连接,那么您的
createtable
语句将尝试在该远程数据库中创建一个表。