Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 补充以下声明: Cmd.ExecuteNonQuery() Conn.Close() Conn.Dispose()_Sql_Asp.net_Sql Server_Ssms - Fatal编程技术网

Sql 补充以下声明: Cmd.ExecuteNonQuery() Conn.Close() Conn.Dispose()

Sql 补充以下声明: Cmd.ExecuteNonQuery() Conn.Close() Conn.Dispose(),sql,asp.net,sql-server,ssms,Sql,Asp.net,Sql Server,Ssms,然后它关闭了安全会话状态数据库连接,从而允许所有其他三个存储过程运行 因此,这再一次解决了这个问题,而为我找到答案的根源来自Devio的密切联系建议 我希望我用正确的堆栈溢出协议来结束这个问题,如果我遗漏了什么,请告诉我。再次感谢大家。你是最棒的 --克里斯这张桌子上有触发器吗?另外,您可以发布您收到的确切错误消息吗?您的表没有IDENTITY列。也许那会有帮助?(顺便说一句,我也不是DBA)在一个小表上超时意味着阻塞。您可能没有更新权限,或者在执行此操作时,该表正被另一个进程阻塞。如果您在更新

然后它关闭了安全会话状态数据库连接,从而允许所有其他三个存储过程运行

因此,这再一次解决了这个问题,而为我找到答案的根源来自Devio的密切联系建议

我希望我用正确的堆栈溢出协议来结束这个问题,如果我遗漏了什么,请告诉我。再次感谢大家。你是最棒的


--克里斯

这张桌子上有触发器吗?另外,您可以发布您收到的确切错误消息吗?您的表没有
IDENTITY
列。也许那会有帮助?(顺便说一句,我也不是DBA)在一个小表上超时意味着阻塞。您可能没有更新权限,或者在执行此操作时,该表正被另一个进程阻塞。如果您在更新前后注释掉事务,它是否会完成?运行此操作的DB和日志驱动器上是否有足够的可用空间?在开始此过程之前,日志是否接近增长。您的另一个站点是否正在写入同一驱动器,并导致与IO或其他资源的争用?谢谢施密茨,我试过了,它又爆炸了。我还将UPDATE语句修改为UPDATE tblElinesNewsletter SET ApprovalPending=0。都失败了。在SSMS中调出估计的执行计划时会发生什么?它是什么?我唯一能想到的是nvarchar(max)列是一个问题,因为它们被认为是blob。但是你不能碰那些有更新声明的人。是的,那是疯狂的事情。现在我听上去很无知:我在哪里/如何提取估算执行计划?在ManagementStudio中,有一个名为“显示估算执行计划”的图标。它使用SQL Server必须尝试并确定获取请求数据的最佳路径的统计信息。它将显示一个图形化的执行路径,这有助于了解引擎盖下发生了什么。(注意,这是基于估计,实际的执行路径可能不同。)Hi@devio:从代码中可以看出,DB连接似乎正在关闭。下面是上面代码的一个片段:如果Rdr.HasRows,那么当Rdr.Read NewsID=Rdr(“id”)newsletter subject=Rdr(“SubjectNewsletter”)newsletter header=Rdr(“ContentHeader”)newsletter content=Rdr(“ContentNewsletter”)newsletter footer=Rdr(“ContentFooter”)End While End如果Conn.Close()Conn.Dispose()Cmd.Dispose()“从代码中我们都可以看到”,代码运行良好。
UPDATE tblElinesNewsletter
SET NewsletterSent = 1,
    DateSent = GETDATE(),
    ApprovalPending = 0
WHERE (NewsletterSent = 0)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ======================================================
-- Author:      Christopher Lee
-- Create date: 16-Aug-2012
-- Modify date: 16-Aug-2012
-- Description: Mark all records as Sent.
-- ======================================================

ALTER PROCEDURE [dbo].[sProc_Elines_Send_MarkComplete]
AS
   BEGIN TRANSACTION

    UPDATE tblElinesNewsletter
    SET NewsletterSent = 1,
        DateSent = GETDATE(),
        ApprovalPending = 0
    WHERE (NewsletterSent = 0)

    COMMIT
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[tblElinesNewsletter]
(
    [id] [int] IDENTITY(100543,1) NOT NULL,
    [DateNewsletter] [smalldatetime] NOT NULL,
    [SubjectNewsletter] [varchar](100) NOT NULL,
    [ContentHeader] [varchar](max) NOT NULL,
    [ContentNewsletter] [varchar](max) NOT NULL,
    [ContentFooter] [varchar](max) NOT NULL,
    [NewsletterSent] [bit] NOT NULL,
    [DateSent] [smalldatetime] NULL,
    [ApprovalPending] [bit] NOT NULL,
    [PriorityHigh] [bit] NOT NULL,

     CONSTRAINT [PK_tblElinesNewsletter2] 
         PRIMARY KEY CLUSTERED ([id] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[tblElinesNewsletter] 
    ADD CONSTRAINT [DF_tblElinesNewsletter2_PriorityHigh] DEFAULT ((0)) FOR [PriorityHigh]
GO
    Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click

    Call WriteNewsletterFile()

    Call SendNewsletter()

    Call UpdateRecord()

End Sub
   Sub WriteNewsletterFile()

    Dim NewsID As String = ""

    Dim Conn As SqlConnection
    Dim Cmd As SqlCommand
    Dim Rdr As SqlDataReader
    Conn = New SqlConnection(ConfigurationManager.ConnectionStrings("UnitedAFAConnectionStringNSS").ConnectionString)
    Cmd = New SqlCommand()
    Cmd.CommandText = "sProc_Elines_Send_GetContentPending"
    Cmd.CommandType = CommandType.StoredProcedure
    Cmd.Connection = Conn
    Cmd.Connection.Open()
    Rdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection)

    If Rdr.HasRows Then

        While Rdr.Read

            NewsID = Rdr("id")
            NewsletterSubject = Rdr("SubjectNewsletter")
            NewsletterHeader = Rdr("ContentHeader")
            NewsletterContent = Rdr("ContentNewsletter")
            NewsletterFooter = Rdr("ContentFooter")

        End While

    End If

    Conn.Close()
    Conn.Dispose()
    Cmd.Dispose()

    ' Header
    NewsletterHeaderForEmail = NewsletterHeader.Replace("<p>", "<p style=""font-family: Arial, Helvetica, sans-serif; font-size: 12pt; line-height: 1.3em;margin-bottom:1em"">")
    NewsletterHeaderForEmail = NewsletterHeaderForEmail.Replace("<li>", "<li style=""font-family: Arial, Helvetica, sans-serif; font-size: 12pt; line-height: 1.3em;margin-bottom:1em"">")
    NewsletterHeaderForEmail = NewsletterHeaderForEmail.Replace("[NewsID]", NewsID)

    ' Footer
    NewsletterFooterForEmail = NewsletterFooter.Replace("<p>", "<p style=""font-family: Arial, Helvetica, sans-serif; font-size: 12pt; line-height: 1.3em;margin-bottom:1em"">")
    NewsletterFooterForEmail = NewsletterFooterForEmail.Replace("<li>", "<li style=""font-family: Arial, Helvetica, sans-serif; font-size: 12pt; line-height: 1.3em;margin-bottom:1em"">")

    ' Content
    NewsletterContentForEmail = NewsletterContent.Replace("<p>", "<p style=""font-family: Arial, Helvetica, sans-serif; font-size: 12pt; line-height: 1.3em;margin-bottom:1em"">")
    NewsletterContentForEmail = NewsletterContentForEmail.Replace("<li>", "<li style=""font-family: Arial, Helvetica, sans-serif; font-size: 12pt; line-height: 1.3em;margin-bottom:1em"">")
    NewsletterContentForEmail = "<table border=""0"" cellpadding=""0"" cellspacing=""0""><tr><td style=""font-family: Arial, Helvetica, sans-serif; font-size: 12pt"">" & NewsletterContentForEmail & "</td></tr></table>"

    NewsletterFinalReadyForSending = NewsletterHeaderForEmail & NewsletterContentForEmail & NewsletterFooterForEmail

    Dim filePath2 As String = "C:\Programs\SendElines.bat"
    Dim w2 As StreamWriter
    w2 = File.CreateText(filePath2)
    w2.WriteLine("START """" ""C:\Program Files (x86)\Gammadyne Mailer\gm.exe"" /s /n /subject""" & NewsletterSubject & """ /html""C:\Programs\elines.html"" ""C:\Users\Public\Documents\Newsletters\Elines\Sending Template - Elines.mmp""")
    w2.Flush()
    w2.Close()


    Dim filePath As String = "C:\Programs\elines.html"
    Dim w As StreamWriter
    w = File.CreateText(filePath)
    w.WriteLine(NewsletterFinalReadyForSending)
    w.Flush()
    w.Close()

End Sub

Sub SendNewsletter()

        Dim Conn As New SqlConnection(ConfigurationManager.ConnectionStrings("UnitedAFAConnectionStringAfaNewsletters").ConnectionString)
        Dim MySQL As String = "sProc_SendElines"
        Dim Cmd As New Data.SqlClient.SqlCommand(MySQL, Conn)
        Cmd.CommandType = CommandType.StoredProcedure
        Conn.Open()
        Cmd.ExecuteNonQuery()
        Conn.Close()
        Conn.Dispose()

End Sub

Sub UpdateRecord()

    Dim Conn As New SqlConnection(ConfigurationManager.ConnectionStrings("UnitedAFAConnectionStringNSS").ConnectionString)
    Dim MySQL As String = "sProc_Elines_Send_MarkComplete"
    Dim Cmd As New Data.SqlClient.SqlCommand(MySQL, Conn)
    Cmd.CommandType = CommandType.StoredProcedure

    Conn.Open()
    Cmd.ExecuteNonQuery()
    Conn.Close()
    Conn.Dispose()

End Sub
        USE [afanewsletters]
    GO
    /****** Object:  StoredProcedure [dbo].[sProc_SendElines]    Script Date: 9/5/2017 2:51:08 PM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- ======================================================
    -- Author:      Christopher Lee
    -- Create date: 21-Aug-2012
    -- Modify date: 21-Aug-2012
    -- Description: Runs the Elines sending BAT file.
    -- ======================================================

    ALTER PROCEDURE [dbo].[sProc_SendElines]

    AS

    EXEC xp_logevent 67845, 'Send Elines', informational
    USE [Newsletters]
GO
/****** Object:  StoredProcedure [dbo].[sProc_Elines_Send_GetContentPending]    Script Date: 9/6/2017 6:57:06 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ======================================================
-- Author:      Christopher Lee
-- Create date: 16-Aug-2012
-- Modify date: 16-Aug-2012
-- Description: Get content for Elines for approval.
-- ======================================================

ALTER PROCEDURE [dbo].[sProc_Elines_Send_GetContentPending]

AS


BEGIN TRY
BEGIN TRANSACTION

SELECT * FROM tblElinesNewsletter
WHERE     (NewsletterSent = 0)

COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
  RAISERROR ('Problem with sProc_Elines_Send_GetContentPending, please contact the MEC Webmaster at webmaster@unitedafa.org.', 16, 1)
END CATCH
DECLARE @myDate smalldatetime AS CAST(GETDATE() AS smalldatetime)

UPDATE tblElinesNewsletter
SET 
NewsletterSent = 1,
DateSent= myDate ,
ApprovalPending = 0
WHERE NewsletterSent = 0
Rdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection)
If Rdr.HasRows Then
    While Rdr.Read
        ....
    End While
End If

Conn.Close()
Conn.Dispose()
        Cmd.ExecuteNonQuery()
        Conn.Close()
        Conn.Dispose()