1

我正在使用 SQLDataAdapter 运行脚本。脚本如下,

ALTER TABLE dbo.Table1 SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
select Has_Perms_By_Name(N'dbo.Table1', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.Table1', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.Table1', 'Object', 'CONTROL') as Contr_Per BEGIN TRANSACTION
GO
ALTER TABLE dbo.Table2
DROP CONSTRAINT DF_Table2
GO

它给了我错误,因为 GO 附近的语法不正确。如果我从查询文本中删除 GO,它可以正常工作。但我只需要执行这个脚本。

这是ac#代码。QueryText 是一个字符串,它包含整个查询以及 SET 和 GO。

DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(_connectionString);
SqlDataAdapter da = new SqlDataAdapter(QueryText, conn);
da.Fill(ds);

有谁知道如何使用它。

在此先感谢,
维杰

4

1 回答 1

4

GO 是 Management Studio 或其他 SQLServer 命令行工具的标记,并用作最终分隔符以将一批命令发送到 SQL Server。
在您的代码中,您需要复制此行为。
使用 GO 作为分隔符将脚本分隔为子部分。
使用单个命令(用于 ALTER TABLE)发送每个部分,并将 SqlDataAdapter 用于 SELECT 部分。
此外,您应该从脚本部分中删除 COMMIT 和 BEGIN TRANSACTION,并在您的代码中使用来自 SqlConnection的SqlTransaction对象。

于 2012-05-23T09:37:49.057 回答