Escaping in MSSQL script?


#1

Hi…
Can anyone suggest the proper way to escape the backslashes in the
directory name in the following script?

d = c.run(“ALTER DATABASE fooDB MODIFY FILE (NAME = foo_log, FILENAME =
‘C:\Program Files\Microsoft SQL
Server\MSSQL\fooPlus\fooPlus_log.LDF’”)

The obvious solutions yield either “Incorrect syntax…” or “Invalid
escape character syntax” messages.

Thanks…
-CHris


#2

Chris McMahon wrote:

escape character syntax" messages.

Thanks…
-CHris

Four backslashes should work. Wildly guessing only.


#3

Good guess, but

‘C:\\Program Files\Microsoft
SQLServer\MSSQL\fooPlus\fooPlus_log.LDF’

yields

Incorrect syntax near ‘C:\Program Files\Microsoft SQL
Server\MSSQL\data\fooPlus\fooPlus_log.LDF’


#4

Chris McMahon wrote:

I meant four backslashes -everywhere-. Gets escaped to two backslashes
by Ruby, then to one backslash by MS SQL.

David V.


#5

d = c.run("…‘c:\\blah…’…")

rather than using double quotes which processes escapes within, use
single quotes and use ’ when you need single quotes within?

d = c.run(’…‘c:\blah…’…’)

-Joby


#6

Shouldn’t you have c:\what\ever or c:\what\ever? It’s not a URL :slight_smile:


#7

Joby B. wrote:

d = c.run("…‘c:\\blah…’…")

rather than using double quotes which processes escapes within, use
single quotes and use ’ when you need single quotes within?

d = c.run(’…‘c:\blah…’…’)
-Joby

you still need to escape backslashes even when using single-quoted
string
literals. (maybe you’re referring to php?)

–moogs


#8

moogs wrote:

you still need to escape backslashes even when using single-quoted
string literals. (maybe you’re referring to php?)

–moogs

Doesn’t Ruby have a general delimiter wart for raw strings? I know
Python has, can’t recall about Ruby.

David V.