SQLDataadapter 不适用于 GO

本文关键字:GO 适用于 不适用 SQLDataadapter | 更新日期: 2023-09-27 18:35:07

我正在使用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);

有谁知道如何使用它。

提前感谢,
维杰

SQLDataadapter 不适用于 GO

GO

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