Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Server 2008 R2-SSMA转换的扩展过程调用(IMPL过程)影响性能_Sql_Sql Server_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql Server 2008 R2-SSMA转换的扩展过程调用(IMPL过程)影响性能

Sql Server 2008 R2-SSMA转换的扩展过程调用(IMPL过程)影响性能,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,我们正在进行Oracle到SQL Server 2008的迁移项目。因此,我们有很多oracle包函数,用于调用其他存储过程。这些函数已由SSMA转换为IMPL过程,这些过程通过函数的扩展过程执行。在可能的情况下,我们已将大多数此类函数转换为简单的UDF。现在我们面临一个特殊的性能问题。使用IMPL过程调用调用此类函数的查询运行时间较长。有趣的是,使用SQLServer2008在旧服务器上运行相同的查询只需2分钟。现在在使用SQLServer2008R2的新服务器中,需要花费很长时间,大约25-

我们正在进行Oracle到SQL Server 2008的迁移项目。因此,我们有很多oracle包函数,用于调用其他存储过程。这些函数已由SSMA转换为IMPL过程,这些过程通过函数的扩展过程执行。在可能的情况下,我们已将大多数此类函数转换为简单的UDF。现在我们面临一个特殊的性能问题。使用IMPL过程调用调用此类函数的查询运行时间较长。有趣的是,使用SQLServer2008在旧服务器上运行相同的查询只需2分钟。现在在使用SQLServer2008R2的新服务器中,需要花费很长时间,大约25-30分钟

我们已经证实,这些指标和统计数据也是最新的。我们还注意到,IMPL调用经过master和sysdb数据库,并使用内部表存储IMPL过程调用的结果并将其传递回函数。它们的空间分配不同于旧服务器。但它们并没有耗尽空间。他们会造成问题吗?是否有关于master/sysdb数据库空间分配的指导原则

数据库的容量约为300GB,tempdb的容量约为50GB

旧服务器

SQL Server 2008/Windows 氙气四核x4-3GHz,64GB RAM 新服务器

SQL Server 2008 R2 RTM Opteron 6核x6-2.2GHz,64GB RAM 如果需要更多的细节,请告诉我


感谢

SQL Server中的用户定义函数不仅仅是可以返回值的SP,例如,它们不能修改数据库表。Oracle函数可以做与过程基本相同的事情。因此,据我记忆所及,许多Oracle函数被转换为func_name$IMPL存储过程+一些包装函数,它们通过特定于SSMA的扩展SP调用相应的$IMPL过程。在可能的情况下,SSMA将尽量避免调用函数直接生成对适当的…$IMPL SP的调用,但有些情况不包括在内。这些困难的情况将导致直接调用生成的包装函数。我相信它们确实很慢:只是SSMA在您的案例中没有发现更好的自动转换。。。因此,您应该尝试将生成的SQL Server代码更改为直接使用func_name$IMPL存储过程,只使用普通的EXEC,而不尽可能多地调用包装函数,直到性能适合您为止

什么是IMPL程序?你能展示一些代码的例子吗?你能检查一下旧服务器和新服务器上的查询计划,并比较它们是否有区别吗?见这个问题: