我正在使用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);
有谁知道如何使用它。
提前致谢,
维杰
答案 0 :(得分:4)
GO是Management Studio或其他SQLServer命令行工具的标记,用作将一批命令发送到SQL Server的最终分隔符。
在您的代码中,您需要复制此行为
使用GO作为分隔符分隔子部分中的脚本
使用单个命令(对于ALTER TABLE)发送每个部分,并使用SqlDataAdapter作为SELECT部分
您还应该从脚本部分中删除COMMIT和BEGIN TRANSACTION,并在代码中使用SqlConnection中的SqlTransaction对象。