SQL 注入通过这个存储过程可以造成多大的破坏?

How much damage can SQL injection do via this stored procedure?

最近偶然发现一个由前人硬编码的存储过程来执行一些CRUD。它影响生产数据库中的非关键表。我觉得它很容易受到 SQL 注入的攻击,但看起来注入确实是无害的,因为它在非关键表上执行 CRUD。

@LocalDatabase参数是从connectionString="Server=localHost;Database=localDatabase;..."配置文件中传入的。

我想知道在这个特定的 SP 中可能的 SQL 注入是否会对生产数据库造成灾难性的损害?我正在权衡重写整个模块的成本效益。

ALTER PROCEDURE StoredProc_Name
(
    @LocalDatabase      varchar(50),
    @Result             int             OUTPUT
)

SET @Sql = N'UPDATE <Production Database>.Table1
SET     ...
FROM    <Production Database>.NewTable INNER JOIN
        '+ @LocalDatabase +'.dbo.Table1 ON ... INNER JOIN
        '+ @LocalDatabase +'.dbo.Table2 ON ...
WHERE   NOT EXISTS(SELECT   1
                    FROM    <Production Database>.dbo.Table2
                    WHERE   .....)'

EXEC(@Sql)
SET @Result = @@ROWCOUNT

感谢任何指向正确方向的建议或帮助。提前致谢。

只要用户不影响作为@LocalDatabase 传入的值,这种方法就可以。不使用动态 SQL 会更好,但这种方法可以工作...