通过SAS执行存储过程与在SQL Server中的工作方式不同
我有一个经常在SQLServer中执行的存储过程。在不将数百行代码复制到此处的情况下,它基本上执行以下操作:通过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)使用相同的参数执行相同的过程不会返回相同的结果。它启动该过程并计算统计信息,但随后无法将统计信息插入现有表,
- 您可以输入数据库和表名作为参数
- 然后,该过程计算表中所有字段(average、sum等)的汇总统计信息,并将它们插入到临时表中
- 然后将摘要统计信息插入到现有的元表中
- 然后删除临时统计表
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它们是相同的。我认为这是一个连接问题,它在中途下降或其他什么。