非常简单的table和insert语句,如果字符串是'Golf'则失败,但适用于任何其他字符串。 表创建:
CREATE TABLE [dbo].[market]
(
[marketID] [int] NOT NULL,
[name] [varchar](50) NULL,
CONSTRAINT [PK_market] PRIMARY KEY CLUSTERED ([marketID] ASC)
)
插入:
INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'Golf')
Error: Unclosed quotation mark after the character string ''. (State:37000, Native Code: 69)
Error: Incorrect syntax near ''. (State:37000, Native Code: 66)
Error: Unclosed quotation mark after the character string ')'.
现在,如果我将插入更改为:
INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'Test')
它运作得很好。有没有人见过这个?
答案 0 :(得分:3)
我认为如果在字符串中的任何位置找到GO,则必须断开正在使用的应用程序并将其拆分为批次。
e.g。它使用了一种天真的方法,如下所示。
Regex.Split(sqlString, "GO", RegexOptions.IgnoreCase);
然后将结果作为单独的批次执行。
运行
INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'
返回您报告的前两个错误。
Msg 105,15级,1号国家,1号线后的未公开引号 字符串''。
消息102,级别15,状态1,行1不正确 语法附近''。
执行
lf')
返回第三个。
Msg 105,15级,1号国家,1号线后的未公开引号 字符串')'。
临时解决方法可能是尝试
INSERT [dbo].[market] ([marketID], [name]) VALUES (4, N'G' + 'olf')
但当然应用程序确实需要修复。