Sql コードの構文エラーをテストする T-SQL の単体テストをいくつか作成しました。NUnit または Microsoft ユニット テスト フレームワークで C# からテストが実行され、前のステートメントで実行されます。
SET FMTONLY ON;
このステートメントの Microsoft 参照。
メタデータを取得した後は、実際には何も実行されないため、通常はデータを変更するクエリをテストすることもできます。
たとえば、以下の NUnit テストを参照してください。これは、プロシージャが存在し、それ自体またはストアド プロシージャの依存関係に構文エラーがない場合に成功します。
[Test]
public void GivenStoredProcedure_WhenParsedBySqlServer_ThenItsResultShouldBeZero()
{
const string sqlText = "SET FMTONLY ON; EXEC dbo.MyStoreProc;";
var sqlConnection = new SqlConnection(connectionString);
var sqlCommand = new SqlCommand(sqlText, sqlConnection);
sqlCommand.CommandType = CommandType.Text;
try
{
sqlConnection.Open();
var result = sqlCommand.ExecuteNonQuery();
Assert.That(result, Is.EqualTo(0));
}
finally
{
if (sqlConnection.State == ConnectionState.Open)
{
sqlConnection.Close();
}
sqlConnection.Dispose();
}
}