2016-06-29 4 views
0

Вот мой код:Выполнение Sp_SetAppRole из ExecuteSqlCommand

  SqlParameter rolename = new SqlParameter("rolename", SqlDbType.VarChar); 
      rolename.Direction = ParameterDirection.Input; 
      rolename.Value = "role";     

      SqlParameter password = new SqlParameter("password", SqlDbType.VarChar); 
      password.Direction = ParameterDirection.Input; 
      password.Value = "[email protected]"; 

      SqlParameter fCreateCookie = new SqlParameter("fCreateCookie", SqlDbType.Bit); 
      fCreateCookie.Direction = ParameterDirection.Input; 
      fCreateCookie.Size = 100; 
      fCreateCookie.Value = true;     

      SqlParameter cookie = new SqlParameter("cookie", SqlDbType.VarBinary); 
      cookie.Direction = ParameterDirection.Output; 
      cookie.Size = 8000; 

      _context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, "EXEC sp_setapprole @rolename,@password,@fCreateCookie, @cookie OUT;", rolename, password, fCreateCookie, cookie); 

И я получаю ошибку:

Формальный параметр «@fCreateCookie» не был объявлен как параметр OUTPUT, но фактическое параметр передан в запрошенном выходе.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

+0

может показать ваш зр код –

+0

@NazirUllah Это системам Sp. Не мой СП. –

ответ

0

вам не хватает параметр,

ALTER procedure [sys].[sp_setapprole] 
     @rolename sysname,  -- name app role 
     @password sysname,  -- password for app role 
-->  @encrypt varchar(10) = 'none',  -- Encryption style ('none' | 'odbc') 
     @fCreateCookie bit = 0, 
     @cookie varbinary(8000) = 0xFFFFFFFF OUTPUT 
    as 

вам нужно добавить paramerer @encrypt = 'NONE' перед @fcreatecookie в вашем executesqlcommand вызова

+0

Это не сработало. –

+0

Вы пытались установить @fCreateCookie вне, в строке выполнения? – Thorarins

+0

теперь он должен работать, проблема в том, что вы выполняете sp с параметрами по порядку, и вам не хватает одного – Thorarins

Смежные вопросы