Лучший отвечающий
Проблема с хранимой процедурой

Вопрос
-
Здравствуйте
Пытаюсь вызвать хранимую процедуру FUCreate (В базе она есть точно!)
код:
using (SqlConnection connect = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString)) { SqlCommand cmd = new SqlCommand(); cmd.Connection = connect; cmd.CommandText = "[FUCreate]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@CrDT", SqlDbType.DateTime, 8)); cmd.Parameters["@CrDT"].Value = System.DateTime.Now; cmd.Parameters.Add(new SqlParameter("@Email", SqlDbType.NVarChar, 100)); cmd.Parameters["@Email"].Value = model.Email; cmd.Parameters.Add(new SqlParameter("@Login", SqlDbType.NVarChar, 20)); cmd.Parameters["@Login"].Value = model.UserName; cmd.Parameters.Add(new SqlParameter("@Passw", SqlDbType.NVarChar, 20)); cmd.Parameters["@Passw"].Value = model.Password; cmd.Parameters.Add(new SqlParameter("@TelNumber", SqlDbType.NVarChar, 30)); cmd.Parameters["@TelNumber"].Value = model.Phone; connect.Open(); cmd.ExecuteNonQuery(); connect.Close(); return View(); }
получаю:Не удалось найти хранимую процедуру "FUCreate".
Из-за чего это может быть?
22 ноября 2012 г. 6:14
Ответы
-
Проверьте строку подключения которую вы считываете из файла конфигурации.
И проверьте, есть ли у учетки под которой заходите в БД права на вызов этой процедуры.- Изменено Алексей ЛосевEditor 22 ноября 2012 г. 7:47
- Помечено в качестве ответа Abolmasov DmitryModerator 30 ноября 2012 г. 8:53
22 ноября 2012 г. 7:46Отвечающий -
Поставьте в начале секции connectionStrings в вэб конфиг файле тэг.
<clear/>
Т.е. у вас должно получится следующее:
<connectionStrings> <clear/> <add name="11111Entities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=11111.mssql.hoster.ru;initial catalog=11111;persist security info=True;user id=11111;password=xxxxx;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>
После этого у вас по индексу 0 будет получаться именно ваша строка подключения.
Первоначальная строка - это строка к локальной sql express БД, для того чтобы приложения по умолчанию могли работать с профайлами пользователей и т.п.
- Помечено в качестве ответа Abolmasov DmitryModerator 30 ноября 2012 г. 8:53
23 ноября 2012 г. 7:32
Все ответы
-
Попробуйте указать схему перед именем: dbo.FUCreate или другое, если схема другая.22 ноября 2012 г. 6:17Модератор
-
Не помогло22 ноября 2012 г. 6:32
-
А если скобки убрать:
cmd.CommandText = "FUCreate";
22 ноября 2012 г. 6:45Модератор -
Тоже нет22 ноября 2012 г. 6:47
-
Покажите код процедуры.22 ноября 2012 г. 6:50Модератор
-
ALTER PROCEDURE [dbo].[FUCreate]( @CrDT datetime, @Email nvarchar(100), @Login nvarchar(20), @Passw nvarchar(20), @TelNumber nvarchar(30) ) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; INSERT INTO Users (CreationDateTime,Email,Login,Password,TelNumber,Confirmed)VALUES(@CrDT,@Email,@Login,@Passw,@TelNumber,0); END
cmd.CommandText = "[dbo].[FUCreate]";
строка сейчас выглядит так
22 ноября 2012 г. 6:59 -
Проверьте строку подключения которую вы считываете из файла конфигурации.
И проверьте, есть ли у учетки под которой заходите в БД права на вызов этой процедуры.- Изменено Алексей ЛосевEditor 22 ноября 2012 г. 7:47
- Помечено в качестве ответа Abolmasov DmitryModerator 30 ноября 2012 г. 8:53
22 ноября 2012 г. 7:46Отвечающий -
Проверьте строку подключения которую вы считываете из файла конфигурации.
И проверьте, есть ли у учетки под которой заходите в БД права на вызов этой процедуры.Спасибо, суть проблемы нашёл, но возникли другие: При исполнении кода отладчик выдаёт вот такую строку подключения.
"data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
это - не та база , которая нужна.
В обозревателе БД её нет. В конфигах прописана та база, что надо.
<connectionStrings>
<add name="11111Entities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=11111.mssql.hoster.ru;initial catalog=11111;persist security info=True;user id=11111;password=xxxxx;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>проект перестраивал несколько раз. Где может ещё быть прописана \\SQLEXPRESS ?
22 ноября 2012 г. 10:09 -
Вы показываете строку подключения EntityFramework, а пытаетесь засунуть ее в SqlConnection. Но это так, лирика.
У меня создается ощущение, что вы смотрите на в тот web.config. Проверьте именно в том приложении которое запускаете, что у вас прописано в файле web.config.
P.s. Копировать надо в него не всю строку из преведенного вами выше примера, а только вот это:
data source=11111.mssql.hoster.ru;initial catalog=11111;persist security info=True;user id=11111;password=xxxxx;MultipleActiveResultSets=True
22 ноября 2012 г. 10:30Отвечающий -
В общем "как надо" не получилось. Пересмотрел всё FAR-ом - нигде другая база не указана. Просто тупо подключился к нужной базе...
using (SqlConnection connect = new SqlConnection("data source=11111.mssql.hoster.ru;initial catalog=11111;persist security info=True;user id=11111;password=xxxxx;MultipleActiveResultSets=True"))
22 ноября 2012 г. 11:09 -
Поставьте в начале секции connectionStrings в вэб конфиг файле тэг.
<clear/>
Т.е. у вас должно получится следующее:
<connectionStrings> <clear/> <add name="11111Entities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=11111.mssql.hoster.ru;initial catalog=11111;persist security info=True;user id=11111;password=xxxxx;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>
После этого у вас по индексу 0 будет получаться именно ваша строка подключения.
Первоначальная строка - это строка к локальной sql express БД, для того чтобы приложения по умолчанию могли работать с профайлами пользователей и т.п.
- Помечено в качестве ответа Abolmasov DmitryModerator 30 ноября 2012 г. 8:53
23 ноября 2012 г. 7:32