July 27, 2017 at 4:47 pm
I have a SQL agent job that uses tokens. When I script out the job and run in SSMS, it's fine as the tokens are just text. When I run it through SQLCMD, it's trying to interpret the tokens as variables. I can use -x to disable variable expansion, but outside of the main script, I wanted to use some variables to dynamically assign some other data. Is there a way to escape the $ so it doesn't get processed by SQLCMD as a variable?
Example (inside the SQL script)
Declare @ServerName
SET @ServerName = $(ServerName)
...
@output_file_name=N'D:\Folder\Backups_$(ESCAPE_SQUOTE(STRTDT))_$(ESCAPE_SQUOTE(STRTTM)).txt',
I want $(ServerName) to be interpreted as a variable.
I do not want this $(ESCAPE_SQUOTE(STRTDT)) to be interpreted as a variable.
July 28, 2017 at 12:01 am
Try using CHAR(36) instead of the $ for the ones you don't want to be interpreted as a variable
@output_file_name=N'D:\Folder\Backups_' + CHAR(36) + N'(ESCAPE_SQUOTE(STRTDT))_' + CHAR(36) + N'(ESCAPE_SQUOTE(STRTTM)).txt',
July 28, 2017 at 12:07 pm
burfos - Friday, July 28, 2017 12:01 AMTry using CHAR(36) instead of the $ for the ones you don't want to be interpreted as a variable@output_file_name=N'D:\Folder\Backups_' + CHAR(36) + N'(ESCAPE_SQUOTE(STRTDT))_' + CHAR(36) + N'(ESCAPE_SQUOTE(STRTTM)).txt',
Hmm, good idea. Let me try that.
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy