Я создаю настольное приложение.с пользователем выберите файл .sql и запустите его с Transaction / Rollback.
, в этом случае я прочитал весь контекст из файла sql.и поместите между следующим кодом для замены сценария файла SQL на ***** $ Замените текст $ *****.
Как я могу обработать транзакцию / откат, если файл SQL содержит пакет «GO».его ошибка броска.
любое решение для этого типа сценария для любого файла sql, преобразованного в транзакцию / откат.
Примечание: без изменений в сценарии файла sql.
файл sqlсценарий:
INSERT INTO [dbo].[User] ([Name] ,[ContectNo]) VALUES ('m3','33')
GO BEGIN TRANSACTION
INSERT INTO [dbo].[User] ([Name] ,[ContectNo]) VALUES ('m3',null)
GO BEGIN TRANSACTION
INSERT INTO [dbo].[User] ([Name] ,[ContectNo]) VALUES ('m3','99')
GO
-----------------------------------------------------
Transaction block: replace sql file query from *****$Replace$*****
-----------------------------------------------------
SET XACT_ABORT ON;
GO
BEGIN TRY
BEGIN TRANSACTION
*****$Replace$*****
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF @@ERROR > 0
BEGIN
ROLLBACK TRANSACTION
DECLARE @ErrorMessage NVARCHAR(max) = ERROR_MESSAGE()
DECLARE @ErrorSeverity INT = ERROR_SEVERITY()
DECLARE @ErrorState INT = ERROR_STATE()
DECLARE @ErrorLine INT = ERROR_LINE()
RAISERROR (@ErrorMessage,
@ErrorSeverity,
@ErrorState
);
END
END CATCH
SET XACT_ABORT OFF