ALTER存储过程永远执行我的批量插入SP

时间:2015-03-25 08:57:35

标签: sql-server-2008 tsql stored-procedures execution-time

我正在改变我最初创建的SQL Server中的存储过程,但它需要永远执行。所有其他SP在数据库中表现良好。我正在尝试使用此特定SP进行批量插入。

USE [HERO_G_E1]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[usp_CollectData]
AS
BEGIN   
BEGIN TRY
    BEGIN TRANSACTION


        BULK INSERT TMainData
        FROM '\\MyServer\MyDbMaster\Datasets\\Data150324.txt'

        WITH
        (
            FIELDTERMINATOR = '\t',
            FIRSTROW = 2,
            ROWTERMINATOR = '\n'
        )

        SELECT  * FROM TMainData
    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    DECLARE @ErrorMessage NVARCHAR(4000);
    DECLARE @ErrorSeverity INT;
    DECLARE @ErrorState INT;
    SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE();
    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION
        RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState)

END CATCH
END

1 个答案:

答案 0 :(得分:1)

我注意到有时对某些物体进行ALTER,往往需要一段时间。我不知道为什么(可能有更多SQL Server知识的人可能知道)。其中一个似乎对我有用的方法就是删除对象,然后重新创建它。如果您不确定对象的所有特定特征,您可以随时右键单击该对象,然后脚本存储过程为>创建到>新的查询编辑器窗口,让自己有一个良好的开端

示例:

--You can preface your code so it will automatically drop it if it exists
IF OBJECT_ID('dbo.usp_CollectData') IS NOT NULL
    DROP PROCEDURE dbo.usp_CollectData;
GO
CREATE PROCEDURE dbo.usp_CollectData
AS
BEGIN
   /*Your Code Here*/
END;
GO