Member 14466828 Ответов: 2

Процедуру найти не удалось


Привет,

Прежде чем начать я должен отметить что я уже просмотрел все результаты поиска google прежде чем задать этот вопрос

I следующий SP в моей базе данных:

ALTER procedure [dbo].[chercher_client]
@Code_client nvarchar(50),
@Intitule_client varchar(100)
as 
IF (@Code_client is not NULL AND @Code_client!='')
   BEGIN
   IF (@Intitule_client IS not NULL AND @Intitule_client!='')
      select * from Clients where Code_client=@Code_client and Intitule_client=@Intitule_client
   ELSE
      select * from Clients where Code_client=@Code_client
   END
ELSE IF (@Intitule_client is not null AND @Intitule_client!='')
    BEGIN
    select * from Clients where Intitule_client=@Intitule_client
	END

И это код C#, который я использую для выполнения SP

<pre>   public void Chercher_client(object sender, EventArgs e)
        {

                   SqlConnection connection = new SqlConnection(Properties.Settings.Default.Con);
                    connection.Open();

                    SqlCommand command = new SqlCommand("chercher_client", connection);
                    command.CommandType = CommandType.StoredProcedure;
            
                    command.Parameters.AddWithValue("@code_client", chercher_client_code.Text);
                    command.Parameters.AddWithValue("@Intitule_client", chercher_client_Intitule.Text);
                   
                    command.ExecuteNonQuery();
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = command;
                    DataSet ds = new DataSet();

                    da.Fill(ds);

                    DataTable dt = ds.Tables[0];
                    if (dt.Rows.Count < 1)
                    {
                        MessageBox.Show("Aucun résultat pour cette recherche");
                    }
                    else
                    {               
                        resultat_client.DataSource = dt;
                        resultat_client.DataBind();
                        resultat_client.Visible = true;
                    }
                    connection.Close();
        }


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

Я проверил, что SP существует в БД.
Я запускаю SP на SSMS, и он работает нормально.
Я попытался выполнить другие старые процедуры из той же базы данных в той же процедуре c#, чтобы проверить, не возникла ли проблема с подключением, но они работают нормально.
Я сделал новую тестовую процедуру с простым запросом select, и она тоже не работает.

2 Ответов

Рейтинг:
2

Richard Deeming

Похоже, что пользователь, которого вы подключаете к SQL as, не имеет EXECUTE разрешение на хранимую процедуру.

  1. В SSMS щелкните правой кнопкой мыши хранимую процедуру и выберите страницу "разрешения".
  2. Если ваш пользователь не появляется в списке, нажмите кнопку "Поиск..." и введите свое имя пользователя.
  3. Выберите своего пользователя в списке и нажмите на вкладку "эффективный".
  4. Если в списке действующих разрешений нет пункта "выполнить", то у пользователя нет разрешения на выполнение sproc.

Предоставление разрешений на хранимую процедуру - SQL Server | Microsoft Docs[^]


Рейтинг:
0

OriginalGriff

Попробуй:

command.CommandType = CommandType.StoredProcedure;