2016-06-29 18 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」未聲明作爲輸出參數,但實際參數傳入請求的輸出。

有人能告訴我我做錯了什麼嗎?

+0

@fcreatecookie前添加paramerer @encrypt = '無' 能證明你的SP代碼 –

+0

@NazirUllah這是系統的SP。不是我的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 

您需要在您的通話executesqlcommand

+0

它沒有工作。 –

+0

你有沒有試過在執行字符串中設置@fCreateCookie? – Thorarins

+0

現在它應該工作,問題是你執行參數順序sp,你缺少一個 – Thorarins

相關問題