我有一个接受脚本并针对数据库执行它的存储过程:
CREATE PROCEDURE [dbo].[usp_ExecuteScript]
@Script nvarchar(MAX)
AS
EXECUTE sp_executesql @Script;
当我使用sqlcmd 实用程序从命令行调用此过程时,例如:
sqlcmd -E -d <mydb> -Q "usp_ExecuteScript @Script=$(script)" /v script=my_script
my_script 在哪里SELECT * FROM Users WHERE UserName ='John'
,我被迫手动转义所有特殊字符,例如“qoute”,否则,它无法执行。
当我遍历许多长而复杂的脚本以将它们作为@Script 参数传递以以这种方式执行时,这会变得很麻烦。
你有什么想法让它工作吗?