У меня есть хранимая процедура, которая принимает скрипт и выполняет его для базы данных:
CREATE PROCEDURE [dbo].[usp_ExecuteScript]
@Script nvarchar(MAX)
AS
EXECUTE sp_executesql @Script;
Когда я вызываю эту процедуру из командной строки с помощью sqlcmd Utility , например:
sqlcmd -E -d <mydb> -Q "usp_ExecuteScript @Script=$(script)" /v script=my_script
где my_script равен SELECT * FROM Users WHERE UserName ='John'
, я вынужден экранировать все специальные символы, такие как 'qoute', в противном случае он не будет выполнен.
Это становится громоздким, когда я перебираю несколько длинных и сложные сценарии для передачи их в качестве аргумента @Script, которые будут выполняться таким образом.
У вас есть идея, чтобы это сработало?