【发布时间】:2015-07-11 09:18:38
【问题描述】:
我有创建数据库和表的脚本(大约 50 个表)。当我将脚本复制粘贴到 SQL 管理工作室时,它运行良好,但是当我尝试从我的应用程序运行时,我收到了 SQL 异常。
这是我的代码:
string enterRecordsScript = "my sql script";
SqlCommand enterRecords = new SqlCommand(enterRecordsScript, connection);
enterRecords.ExecuteNonQuery();
这里是个例外:
A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
Additional information: Incorrect syntax near 'GO'.
'CREATE VIEW' must be the first statement in a query batch.
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
Incorrect syntax near 'GO'.
这是脚本:
CREATE DATABASE TEST3
GO
USE Test3;
CREATE TABLE [SAShoppingInvoice]
(
[Guid] uniqueidentifier PRIMARY KEY NOT NULL ROWGUIDCOL,
[Number] nvarchar(50),
[DateOfShopping] datetime,
[SubTotal] decimal(18,2) DEFAULT 0,
[PSubTotal] decimal(18,2) DEFAULT 0,
[Freight] decimal(18,2) DEFAULT 0,
[Total] decimal(18,2) DEFAULT 0,
[ATotal] decimal(18,2) DEFAULT 0,
[PriceLevel] nvarchar(20),
[SummaryTotal] decimal(18,2) DEFAULT 0,
);
CREATE TABLE [SAShoppingInvoiceDetail]
(
[Guid] uniqueidentifier PRIMARY KEY NOT NULL ROWGUIDCOL,
[Number] nvarchar(50),
[UnitPrice] decimal(18,2) DEFAULT 0,
[Quantity] decimal(18,2) DEFAULT 0,
[Description] nvarchar(100),
);
ALTER TABLE [SAShoppingInvoiceDetail]
ADD ShoppingInvoiceGuid uniqueidentifier
CONSTRAINT FK_SAShoppingInvoice_ShoppingInvoice_To_SAShoppingInvoiceDetail_ShoppingInvoice
FOREIGN KEY (ShoppingInvoiceGuid)
REFERENCES [SAShoppingInvoice](Guid);
GO
CREATE VIEW SAShoppingInvoice_SummaryTotal WITH SCHEMABINDING AS SELECT ShoppingInvoiceGuid, SUM(ISNULL(Quantity,0)*ISNULL(UnitPrice,0)) as SummaryTotal, COUNT_BIG(*) as CountBig
FROM dbo.SAShoppingInvoiceDetail Group By ShoppingInvoiceGuid;
GO
CREATE UNIQUE CLUSTERED INDEX idx_SAShoppingInvoiceSummaryTotal ON SAShoppingInvoice_SummaryTotal(ShoppingInvoiceGuid);
为什么从我的应用程序运行脚本会出现问题?
【问题讨论】:
-
您必须共享 sql 脚本。
-
就像说
CREATE VIEW必须是查询批处理中的第一条语句。意味着您应该在CREATE VIEW语句之前使用Go声明 -
@faridbekran 不,包含
GO的事实是问题所在。在其中添加更多GOs 不会解决任何问题。
标签: c# sql sql-server