背景
我正在使用SMO读取脚本,然后在我的数据库中执行它。在执行脚本之前,需要修改脚本的某些部分,比如数据库的数据。
该变量在允许使用之前会被清理和检查,并且只能包含大写字母。
变量是这种情况下的prefix。
但是,由于某种原因,当我在脚本的这个特定部分中使用一个变量时,我会得到以下错误。

码
生成此错误报告的代码行如下所示。
sql += @"FROM dbo." + prefix + "reportEmails";下面可以看到完整的代码块。
sql += @"
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO";
sql += Environment.NewLine;
sql += @"CREATE VIEW [dbo].[" + prefix + "reportEmails]";
sql += @"AS
SELECT EmailID, EmailContent, EmailSubject, EmailTo, EmailFrom, UserID, ObjectValueID, EmailSent, EmailCreated, EmailRead, EmailFromName, EmailType, EmailFailed,
CASE WHEN emailread IS NULL THEN 'Not Read' ELSE 'Read' END AS EmailStatus
FROM DEReportingClient2DB.dbo.Emails AS Emails_1
WHERE (UserID IN
(SELECT UserID
FROM DEReportingClient2DB.dbo.Users
WHERE (ClientID = 195)))
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO";
sql += Environment.NewLine;
sql += @"CREATE VIEW [dbo].[" + prefix + "unreadEmails]";
sql += @"AS
SELECT COUNT(*) AS UnreadEmails, UserID";
sql += @"FROM dbo." + prefix + "reportEmails";
sql += @"WHERE (EmailRead IS NULL)
GROUP BY UserID
GO
...问题
我为什么要犯这个错误?
'.‘附近不正确的语法
发布于 2015-03-08 14:49:56
回答
在显示了实际放入变量SQL中的内容之后,我发现有时代码没有放在换行符上。这导致了语言的结合。
SQL变量中的字符串
例如,请参见以Select开头的行

实际解
在关键字之前添加一个换行符。
sql+=Environment.NewLine;示例
sql += Environment.NewLine;
sql += @"CREATE VIEW [dbo].[" + prefix + "unreadEmails]";
sql += Environment.NewLine;
sql += @"AS";
sql += Environment.NewLine;
sql += @"SELECT COUNT(*) AS UnreadEmails, UserID";
sql += Environment.NewLine;
sql += @"FROM dbo." + prefix + "reportEmails";
sql += Environment.NewLine;https://stackoverflow.com/questions/28927087
复制相似问题