通过SAS执行存储过程与在SQL Server中的工作方式不同

通过SAS执行存储过程与在SQL Server中的工作方式不同,sql,sql-server,sas,proc-sql,sas-wps,Sql,Sql Server,Sas,Proc Sql,Sas Wps,我有一个经常在SQLServer中执行的存储过程。在不将数百行代码复制到此处的情况下,它基本上执行以下操作: 您可以输入数据库和表名作为参数 然后,该过程计算表中所有字段(average、sum等)的汇总统计信息,并将它们插入到临时表中 然后将摘要统计信息插入到现有的元表中 然后删除临时统计表 当通过SQL Server执行时,过程本身可以完美地工作 但是,通过SAS代码(通过WPS)使用相同的参数执行相同的过程不会返回相同的结果。它启动该过程并计算统计信息,但随后无法将统计信息插入现有表,

我有一个经常在SQLServer中执行的存储过程。在不将数百行代码复制到此处的情况下,它基本上执行以下操作:

  • 您可以输入数据库和表名作为参数
  • 然后,该过程计算表中所有字段(average、sum等)的汇总统计信息,并将它们插入到临时表中
  • 然后将摘要统计信息插入到现有的元表中
  • 然后删除临时统计表
当通过SQL Server执行时,过程本身可以完美地工作

但是,通过SAS代码(通过WPS)使用相同的参数执行相同的过程不会返回相同的结果。它启动该过程并计算统计信息,但随后无法将统计信息插入现有表,也无法删除临时表。尽管如此,SAS日志中没有返回任何错误。执行该过程的SAS代码如下:

proc sql;
   connect to odbcold(required="dsn=&SQLServer; database=_Repository;");
   execute (SP_Meta_Stats
              @DATABASE = &vintage.,
              @TABLE_NAME = &table_name.) by odbcold;
disconnect from odbcold;
quit;
我可以向您保证,宏变量已正确设置,因为程序使用正确的参数正确启动。它只是没有像直接在SQL中那样完成这个过程

通过SAS中的proc SQL语句执行SQL存储过程是否存在已知的限制?尽管只执行了相同的过程,但计算结果与SQL中的不一样,有什么已知的原因吗

编辑:
这似乎是某种联系问题。就好像在经过一段时间后,WPS断开了与SQL连接的连接一样。因为有时临时表只计算了少数变量的统计数据。

“但是,通过SAS代码(通过WPS)使用相同的参数执行相同的过程不会返回相同的结果。”;这是事实。当通过SQL Server执行时(我假设您指的是SSMS),您可能使用具有sysadmin角色的登录进行连接,并且可以访问所有内容。是否与SAS一起使用的登录权限较低?请让SQL Server管理员跟踪连接的活动。您的登录标识可能需要更多授权。如果WPS的产品出现问题,您需要与WPS连接。@Larnu它们是相同的。我认为这是一个连接问题,是中途掉线还是什么。“但是,通过SAS代码(通过WPS)使用相同的参数执行相同的过程并不会返回相同的结果。”然后就不一样了;这是事实。当通过SQL Server执行时(我假设您指的是SSMS),您可能使用具有sysadmin角色的登录进行连接,并且可以访问所有内容。是否与SAS一起使用的登录权限较低?请让SQL Server管理员跟踪连接的活动。您的登录标识可能需要更多授权。如果WPS的产品出现问题,您需要与WPS连接。@Larnu它们是相同的。我认为这是一个连接问题,它在中途下降或其他什么。