balbert99 Ответов: 3

Все новые хранимые процедуры приводят к тому, что свойство executenonquery: commandtext не было инициализировано


Я создал несколько рабочих хранимых процедур на своем сервере SQL 2008, но теперь все они приводят к одной и той же ошибке: свойство ExecuteNonQuery: CommandText не было инициализировано. Я взял существующую процедуру, которая, как я проверил, все еще работает, создал ее под другим именем, проверил, что одни и те же пользователи имеют одни и те же разрешения, и каждый раз получал ошибку. Я создал новую/отдельную базу данных. Я перезапустил службу SQL, которая ничего не изменила. Я собираюсь перезагрузить сервер...

Любая помощь очень ценится!






Вы заметите, что единственная разница-это название процедуры

spIvrCntyDD = 703
свойство spRptByHoursSums = CommandText не было инициализировано

работающий:

-VB код:
objConn1 = новый SqlConnection(WebConfigurationManager.ConnectionStrings("SqlConn1").Параметр connectionString)
objConn1.Открыть()

objComm1 = новая команда SqlCommand(ConfigurationManager.AppSettings("spIvrCntyDD"), objConn1)
objComm1.CommandType = CommandType.Хранимая процедура
objComm1.параметры.AddWithValue ("@strMyId", 6904)
objComm1.Метод executenonquery()
objDR1 = objComm1.Метода executereader()
Если objDR1.Read() = False, то
'''''''''''''''''''''''''''''''''''''''''''''''''''
Свойство HttpContext.Тока.Ответ.Писать("
Read = false
")
'''''''''''''''''''''''''''''''''''''''''''''''''''
Еще
'''''''''''''''''''''''''''''''''''''''''''''''''''
Свойство HttpContext.Тока.Ответ.Писать("
Read = True - " & Trim(objDR1.GetValue(0)) & "
")
'''''''''''''''''''''''''''''''''''''''''''''''''''
Конец, Если
objDR1.закрыть()
objComm1.Распоряжаться()

objConn1.Закрывать()
objConn1.Располагать()


-Процедура:
Используйте [PacsesIVR]
ГО
/****** Объект: StoredProcedure [dbo].[spIvrCntyDD] дата сценария: 10/4/2018 11:29:33 AM ******/
УСТАНОВИТЕ ANSI_NULLS НА
ГО
УСТАНОВИТЕ QUOTED_IDENTIFIER НА
ГО

Изменить процедуру [dbo].[spIvrCntyDD](

@strMyId VARCHAR(50)

)
АС
НАЧАТЬ
Объявить @strType VARCHAR(MAX)
Объявить @strCounty VARCHAR(макс.)
Объявить @strDate1 VARCHAR(макс.)
Объявить @strDate2 VARCHAR(макс.)

SET @strType = 'Hours1'
SET @strCounty = 'Adams'
SET @strDate1 = '9/19/2018'
SET @strDate2 = '9/30/2018'

/* Звонки по часам - Итого */
Если @strType = 'hours1'
Выберите Sum(dbCount) в качестве dbCount
От tblIvrRptCallsByHour
Где dbCounty = " + @strCounty + "
И dbDate между "+ @strDate1 + " и " + @strDate2 + "

КОНЕЦ




не работать:

-VB код:
objConn1 = новый SqlConnection(WebConfigurationManager.ConnectionStrings("SqlConn1").Параметр connectionString)
objConn1.Открыть()

objComm1 = новая команда SqlCommand(ConfigurationManager.AppSettings("spRptByHoursSums"), objConn1)
objComm1.CommandType = CommandType.Хранимая процедура
objComm1.параметры.AddWithValue ("@strMyId", 6904)
objComm1.Метод executenonquery()
objDR1 = objComm1.Метода executereader()
Если objDR1.Read() = False, то
'''''''''''''''''''''''''''''''''''''''''''''''''''
Свойство HttpContext.Тока.Ответ.Писать("
Read = false
")
'''''''''''''''''''''''''''''''''''''''''''''''''''
Еще
'''''''''''''''''''''''''''''''''''''''''''''''''''
Свойство HttpContext.Тока.Ответ.Писать("
Read = True - " & Trim(objDR1.GetValue(0)) & "
")
'''''''''''''''''''''''''''''''''''''''''''''''''''
Конец, Если
objDR1.закрыть()
objComm1.Распоряжаться()

objConn1.Закрывать()
objConn1.Располагать()


-Процедура:
Используйте [PacsesIVR]
ГО
/****** Объект: StoredProcedure [dbo].[spRptByHoursSums] дата сценария: 10/4/2018 11:26:56 AM ******/
УСТАНОВИТЕ ANSI_NULLS НА
ГО
УСТАНОВИТЕ QUOTED_IDENTIFIER НА
ГО

Изменить процедуру [dbo].[spRptByHoursSums](

@strMyId VARCHAR(50)

)
АС
НАЧАТЬ
Объявить @strType VARCHAR(MAX)
Объявить @strCounty VARCHAR(макс.)
Объявить @strDate1 VARCHAR(макс.)
Объявить @strDate2 VARCHAR(макс.)

SET @strType = 'Hours1'
SET @strCounty = 'Adams'
SET @strDate1 = '9/19/2018'
SET @strDate2 = '9/30/2018'

/* Звонки по часам - Итого */
Если @strType = 'hours1'
Выберите Sum(dbCount) в качестве dbCount
От tblIvrRptCallsByHour
Где dbCounty = " + @strCounty + "
И dbDate между "+ @strDate1 + " и " + @strDate2 + "

КОНЕЦ

Что я уже пробовал:

-Создание новых хранимых процедур с нуля
-Создание новых хранимых процедур путем копирования кода из рабочих процедур
-Перезапуска службы SQL

-Создана новая база данных: существующие процедуры перемещены в работу базы данных, а новые-нет

balbert99

добавлен код

spIvrCntyDD = 703
свойство spRptByHoursSums = CommandText не было инициализировано

3 Ответов

Рейтинг:
2

Dave Kreskowiak

Это не имеет ничего общего с хранимой процедурой в базе данных. Это имеет все, что связано с вашим VB.NET код, который вызывает это, но так как вы никогда не показывали этот код, мы не можем сказать вам, что вы сделали неправильно.

Все, что я могу вам сказать, это то, что код для выполнения хранимой процедуры не указывает должным образом имя хранимой процедуры, если вообще указывает.


Рейтинг:
2

Dave Kreskowiak

Вы получаете имя хранимой процедуры из файла настроек приложения, будь то app.config или web.config.

По-видимому, у вас нет записи для параметра в файле под названием "spRptByHoursSums". ConfigurationManager вернет null, если параметр не существует. При указании текста команды ввод null в этот параметр ничем не отличается от ввода String.Там пусто.


balbert99

Спасибо вам за вашу "помощь"... У меня есть файл web.config, и у меня есть записи AppSettings для процедур. Я делаю свои изменения внутри файла web.config, и ошибка-это то, что я получаю взамен. В настоящее время я нахожусь в 54 процедурах в своей базе данных, и я жестко закодировал название процедур 2 дня назад...

balbert99

Когда AppSettings("spIvrCntyDD") = spIvrCntyDD он работает
Когда AppSettings("spIvrCntyDD") = spRptByHoursSums он терпит неудачу

Когда AppSettings("spRptByHoursSums") = spIvrCntyDD он работает
Когда AppSettings("spRptByHoursSums") = spRptByHoursSums он терпит неудачу

Dave Kreskowiak

Что я могу вам сказать?

Где-то между файлом настроек и именами хранимых процедур в базе данных существует несоответствие.

Из сообщения об ошибке может показаться, что имя, которое вы используете для получения параметра из ConfigurationManager, вообще не существует в файле web.config или там, где оно должно быть в файле.

Рейтинг:
1

balbert99

Вы заметите, что единственная разница-это название процедуры

работающий:

-VB code:
  objConn1 = New SqlConnection(WebConfigurationManager.ConnectionStrings("SqlConn1").ConnectionString)
  objConn1.Open()

  objComm1 = New SqlCommand(ConfigurationManager.AppSettings("spIvrCntyDD"), objConn1)
  objComm1.CommandType = CommandType.StoredProcedure
  objComm1.Parameters.AddWithValue("@strMyId", 6904)
  objComm1.ExecuteNonQuery()
  objDR1 = objComm1.ExecuteReader()
  If objDR1.Read() = False Then
  '''''''''''''''''''''''''''''''''''''''''''''''''''
      HttpContext.Current.Response.Write("<div>Read = false</div>")
  '''''''''''''''''''''''''''''''''''''''''''''''''''
  Else
  '''''''''''''''''''''''''''''''''''''''''''''''''''
      HttpContext.Current.Response.Write("<div>Read = True - " & Trim(objDR1.GetValue(0)) & "</div>")
  '''''''''''''''''''''''''''''''''''''''''''''''''''
  End If
  objDR1.Close()
  objComm1.Dispose()

  objConn1.Close()
  objConn1.Dispose()


-Procedure:
  USE [PacsesIVR]
  GO
  /****** Object:  StoredProcedure [dbo].[spIvrCntyDD]    Script Date: 10/4/2018 11:29:33 AM ******/
  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO

  ALTER  PROCEDURE [dbo].[spIvrCntyDD](

  @strMyId VARCHAR(50)

  )
  AS
  BEGIN
    Declare @strType VARCHAR(MAX)
    Declare @strCounty VARCHAR(MAX)
    Declare @strDate1 VARCHAR(MAX)
    Declare @strDate2 VARCHAR(MAX)
  
    SET @strType = 'Hours1'
    SET @strCounty = 'Adams'
    SET @strDate1 = '9/19/2018'
    SET @strDate2 = '9/30/2018'

    /*  Calls by Hour - Totals  */
    If @strType = 'hours1'
      Select Sum(dbCount) as dbCount
      From tblIvrRptCallsByHour
      Where dbCounty = '' + @strCounty + ''
        And dbDate Between '' + @strDate1 + '' And '' + @strDate2 + ''

  END



не работать:
-VB code:
  objConn1 = New SqlConnection(WebConfigurationManager.ConnectionStrings("SqlConn1").ConnectionString)
  objConn1.Open()

  objComm1 = New SqlCommand(ConfigurationManager.AppSettings("spRptByHoursSums"), objConn1)
  objComm1.CommandType = CommandType.StoredProcedure
  objComm1.Parameters.AddWithValue("@strMyId", 6904)
  objComm1.ExecuteNonQuery()
  objDR1 = objComm1.ExecuteReader()
  If objDR1.Read() = False Then
  '''''''''''''''''''''''''''''''''''''''''''''''''''
      HttpContext.Current.Response.Write("<div>Read = false</div>")
  '''''''''''''''''''''''''''''''''''''''''''''''''''
  Else
  '''''''''''''''''''''''''''''''''''''''''''''''''''
      HttpContext.Current.Response.Write("<div>Read = True - " & Trim(objDR1.GetValue(0)) & "</div>")
  '''''''''''''''''''''''''''''''''''''''''''''''''''
  End If
  objDR1.Close()
  objComm1.Dispose()

  objConn1.Close()
  objConn1.Dispose()


-Procedure:
  USE [PacsesIVR]
  GO
  /****** Object:  StoredProcedure [dbo].[spRptByHoursSums]    Script Date: 10/4/2018 11:26:56 AM ******/
  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO

  ALTER  PROCEDURE [dbo].[spRptByHoursSums](

  @strMyId VARCHAR(50)

  )
  AS
  BEGIN
    Declare @strType VARCHAR(MAX)
    Declare @strCounty VARCHAR(MAX)
    Declare @strDate1 VARCHAR(MAX)
    Declare @strDate2 VARCHAR(MAX)
  
    SET @strType = 'Hours1'
    SET @strCounty = 'Adams'
    SET @strDate1 = '9/19/2018'
    SET @strDate2 = '9/30/2018'

    /*  Calls by Hour - Totals  */
    If @strType = 'hours1'
      Select Sum(dbCount) as dbCount
      From tblIvrRptCallsByHour
      Where dbCounty = '' + @strCounty + ''
        And dbDate Between '' + @strDate1 + '' And '' + @strDate2 + ''

  END


Dave Kreskowiak

Вы опубликовали это как решение своего собственного вопроса.

Удалите это и добавьте содержимое к приведенному выше вопросу. Наведите курсор мыши на ваш вопрос, и появится зеленая ссылка "улучшить вопрос". Выберите его, чтобы добавить этот вопрос.