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);

誰かがそれと一緒に行く方法を知っていますか?

よろしくお願いします、
Vijay

4

1 に答える 1

4

GOは、Management Studioまたはその他のSQLServerコマンドラインツールのマーカーであり、コマンドのバッチをSQLServerに送信するための最終的な区切り文字として機能します。
コードでは、この動作を複製する必要があります。
GOを区切り文字として使用して、スクリプトをサブパートに分割します。
単一のコマンド(ALTER TABLEの場合)を使用して各パーツを送信し、SELECTパーツにSqlDataAdapterを使用します。
また、スクリプト部分からCOMMITとBEGIN TRANSACTIONを削除し、コード内でSqlConnectionからSqlTransactionオブジェクトを使用する必要があります。

于 2012-05-23T09:37:49.057 に答える