SQLDataadapter无法使用GO

时间:2012-05-23 09:22:57

标签: c# sql sqldataadapter

我正在使用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,它可以正常工作。但是我只需要执行这个脚本。

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

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

有谁知道如何使用它。

提前致谢,
维杰

1 个答案:

答案 0 :(得分:4)

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