2010-01-29 84 views
76

我使用WinHost.com託管我的網站。 SQL數據庫/成員資格系統在我的本地計算機上完美工作,但是當上傳到服務器時它不起作用。我已正確執行了所有步驟。我已經聯繫了對我的服務的支持,但已經超過了2周,沒有回覆。找不到存儲過程'dbo.aspnet_CheckSchemaVersion'

當我嘗試在我的會員頁面上登錄或註冊新用戶時,我不斷收到此錯誤。

Server Error in '/' Application. 
-------------------------------------------------------------------------------- 

Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[SqlException (0x80131904): Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.] 
    System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1953274 
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849707 
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194 
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392 
    System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +204 
    System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954 
    System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162 
    System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +175 
    System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +137 
    System.Web.Util.SecUtility.CheckSchemaVersion(ProviderBase provider, SqlConnection connection, String[] features, String version, Int32& schemaVersionCheck) +378 
    System.Web.Security.SqlMembershipProvider.CheckSchemaVersion(SqlConnection connection) +89 
    System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +815 
    System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +105 
    System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved) +42 
    System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +78 
    System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +60 
    System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +119 
    System.Web.UI.WebControls.Login.AttemptLogin() +115 
    System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101 
    System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37 
    System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +118 
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +166 
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 




-------------------------------------------------------------------------------- 
Version Information: Microsoft .NET Framework Version:2.0.50727.4200; ASP.NET Version:2.0.50727.4016 

有人可以告訴我爲什麼這個錯誤發生(顯然它不能找到的東西......),我怎麼能解決這個問題?

謝謝大家

巴爾

+0

有沒有可能是你需要進一步限定存儲過程的名稱或所有者不是DBO – David

+0

什麼versio您正在使用SQL Server? –

回答

149

指令難道你運行aspnet_regsql.exe針對WinHost.com的sql服務器?

aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName 

您將需要確保運行此操作,以便在WinHost.com的SQL服務器上創建表和對象。從開始菜單 的Visual Studio工具文件夾

+15

如果您具有集成安全性,請使用「-E」標誌而不是「-U」(用戶名)和「-P」(密碼)標誌。 – Sung

+0

THANKYOU !!!只需添加,你可以運行這個沒有命令行參數來獲得一個圖形用戶界面,不完全像哈克爾,但沒有工作:) – JMK

+0

@gabriel如何運行aspnet_regsql.exe? –

3

檢查存儲過程屬於你的主機上的架構 - 這可能是因爲它不是在「DBO」模式。

例如 如果是內SomeOtherSchema,您的通話將需要「SomeOtherSchema.aspnet_CheckSchemaVersion」

+1

謝謝你AdaTheDev。你能告訴我怎樣才能把呼叫改變成其他的東西嗎?比如,代碼中的約會是... web.config? –

1

總之,你應該用你得到你的主機分配的SQL用戶名重新編譯ASPNET提供商DLL。

  • 下載 http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-33bacfcc8e98/ProviderToolkitSamples.msi
  • 從源代碼替換所有 引用與您的託管 數據庫的用戶名
  • 編譯(你需要的Visual Studio)和 地方 ProviderToolkitSampleProviders.dll在 以DBO Bin文件夾
  • 在你的web.config中用「 」替換每行的「類型」 屬性「Micr osoft.Samples, ProviderToolkitSampleProviders」
  • 在你本地SQL Server從本地替換所有DBO引用與您的託管數據庫的用戶名
  • 導出SQL對象創建腳本和遠程數據庫
  • 複製上運行,它們記錄SQL表aspnet_SchemaVersions到遠程數據庫

另一種選擇,pheraps簡單的嘗試,是與您的託管數據庫的用戶名來替換您的本地SQL Server數據庫的DBO引用,然後上傳,並附上您的MDF文件。

希望它可以幫助

托馬斯

+0

呵呵?你的世界中天空是什麼顏色? lolzalot。老兄只需要提供他的數據庫或修復他的連接字符串。沒有答案會比這更好。 –

+1

當他寫下「我已經正確執行了所有步驟」的時候,我認爲他已經嘗試了aspnet_regsql.exe並且雙擊連接字符串。我知道的託管服務提供商不允許aspnet_regsql.exe,因此我的工作解決方案適用於這種情況。 – Thomas

10

我以前見過這個。您正在使用的數據庫沒有成員資格,角色管理和配置文件功能所需的數據庫元素。所以,你有兩個選擇:

  1. 複製整個表,存儲過程使用SQL Management Studio或類似的應用程序
  2. 使用aspnet_regsql.exe tool您的本地SQL Server &意見,從重新安裝腳本按照這個post(我不相信你可以使用該工具對遠程數據庫,如果它鎖定了。所以你必須導出腳本並手動運行它們)
26

打開Visual Studio命令提示符,然後鍵入 aspnet_regsql

,並按照嚮導以註冊會員asp.net和角色提供數據庫。

+2

喂隊友,運行aspnet_regsql我能解決我的問題,現在問題是這樣--aspnet_regsql - 做什麼? –

5

我有同樣的問題 - 我從SQL Object manager在Visual Studio中複製/粘貼connectionString,忘記輸入Initial Catalog=YourDatabaseName

+0

我有'Initial Catalog = master'而不是'Initial Catalogue = YourDatabaseName' –

+0

謝謝!這爲我修好了。 –

3

當我啓用<roleManager>相信我啓用了ASP.NET身份識別2時,發生了完全相同的錯誤。他們不一樣!<roleManager>啓用了舊版本的身份管理,該身份管理使用與ASP.NET Identity 2不同的表結構(不需要「啓用」方式 - 它就在那裏)。

如果您有意使用舊的角色經理和仍然得到你可能會尋找在默認localdb代替你的數據庫的錯誤,在這種情況下,你可以修改<roleManager>你想要的任何連接字符串,使其指向:

<roleManager 
     enabled="true" 
     cacheRolesInCookie="true" 
     defaultProvider="OurSqlRoleProvider" 
    > 
     <providers> 
      <add 
      connectionStringName="DefaultConnection" 
      applicationName="/" 
      name="OurSqlRoleProvider" 
      type="System.Web.Security.SqlRoleProvider" /> 
     </providers> 

    </roleManager> 

如果您是使用ASP.NET身份2後,這裏是它的一篇文章:
http://johnatten.com/2014/04/20/asp-net-mvc-and-identity-2-0-understanding-the-basics/

相關問題