/*
2014年12月10日14:31:32
用户: hezhietdata
服务器: 192.168.0.101
数据库: New_HuiYiEtData
应用程序:
*/
/* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之外运行此脚本。*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
ALTER TABLE dbo.DealCase ADD
A varchar(50) NULL
GO
COMMIT
select Has_Perms_By_Name(N'dbo.DealCase', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.DealCase', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.DealCase', 'Object', 'CONTROL') as Contr_Per
把这条语句放入:执行时出现Go附近有语法错误,我直接copy到数据库中查询窗口执行并无异常。请问是怎么回事?
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static int ExecuteSqlTran(List<String> SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
int count = 0;
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n];
if (strsql.Trim().Length > 1)
{
strsql = " SET ANSI_WARNINGS OFF " + strsql + " SET ANSI_WARNINGS on ";
cmd.CommandText = strsql;
count += cmd.ExecuteNonQuery();
}
}
tx.Commit();
return count;
}
catch
{
tx.Rollback();
return 0;
}
}
}
------解决思路----------------------
把go去掉,既然是一个事务,不要用go,go是批处理的终止符