SQL Server不在sqlcmd中运行,而是在ssms中运行

gxwragnw  于 2023-01-20  发布在  SQL Server
关注(0)|答案(1)|浏览(115)

在sqlcmd与SSMS下运行的脚本有问题。
我第一次遇到这个问题时,我把大文件(很多插入物)切成小块,把它切成2000个插入物的块。
在sqlcmd日志中,我收到以下错误:
Sqlcmd:错误:finle“D:\vbmania\migdor\migdor-forum-1.sql”中命令“1”附近的第75行出现语法错误。
好的,语法错误......但是当我检查文件时,嗯......我没有任何语法问题。
如果我使用相同的文件并在SSMS中运行,它将正常工作:
Run in SSMS
要以批处理模式执行文件:

sqlcmd -b -S MICRO9\SQLEXPRESS -V 17 -i D:\xxx\migrador\migrador-forum-130.sql -o D:\xxx\migrador\migrador-forum-130.log
sqlcmd -b -S MICRO9\SQLEXPRESS -V 17 -i D:\xxx\migrador\migrador-forum-131.sql -o D:\xxx\migrador\migrador-forum-131.log

和插入结构的示例:

insert into Forum (id, parente, titulo, texto, mundoid, destaque, destaqueglobal, bloqueado, bloqueadorid, bloqueadoem, respostas, vistos, pontos, anexo, interado, ip, usuarioid, criado) 
values ('19656', '19371', 'TÓPICO', 'texthere', '1', '0', '0', '1', '1', '18/08/2009 10:03:45', '0', '1', '0', NULL, '09/04/2004 15:34:23', '200.163.161.xxx', '10', '09/04/2004 15:34:23')

insert into Forum (id, parente, titulo, texto, mundoid, destaque, destaqueglobal, bloqueado, bloqueadorid, bloqueadoem, respostas, vistos, pontos, anexo, interado, ip, usuarioid, criado) 
values ('19659', NULL, 'CALCULADORA', 'othertext', '1', '0', '0', '1', '1', '18/08/2009 10:03:45', '1', '992', '0', NULL, '10/04/2004 01:42:51', '200.175.43.xxx', '10', '09/04/2004 15:40:24')

我做了一个杀毒函数来替换html实体中的无效字符(SQL注入),并确保SQL是有效的(同样,通过SSMS它工作正常)。
我需要通过批处理运行超过100个文件,任何建议/想法,以了解是否是sqlcmd内存泄漏或类似的东西(文件有1.5MB左右)

toe95027

toe950271#

要在sqlcmd中禁用变量替换,请使用-x,例如

sqlcmd -x -b -S MICRO9\SQLEXPRESS -V 17 -i D:\xxx\migrador\migrador-forum-130.sql -o D:\xxx\migrador\migrador-forum-130.log

以及

PS C:\temp> echo 'select ''$(path)'' a' > foo.sql
PS C:\temp> sqlcmd -x -i ".\foo.sql"

产出

a
------
$(path)

相关问题