2012-09-06 41 views
0

對不起,如果這已問過,我一直在尋找,但並沒有真正找到我的答案。SQL壓縮到SQL Server(共享主機)和表前綴

我有一個我開發的博客(MVC 4,EF代碼第一),我在本地使用SQL Compact。現在我想移動到我的託管服務提供商,並且當我編寫數據庫模式(使用SQL Server Compact工具箱)並對SQL服務器運行它時,它使用我的用戶名預先填充所有表。這顯然是導致我的應用程序錯誤地發現它無法找到諸如'dbo.Posts'之類的表,因爲它們都以我的用戶名開頭。

爲了澄清錯誤:

System.Data.SqlClient.SqlException:無效的對象名稱dbo.Posts'。

連接字符串是否正確。我可以從SQL Management Studio管理數據庫。

這裏是我的本地SQL緊湊型數據庫的屏幕截圖:

LocalDB

這裏是我的數據庫看起來像SQL服務器上遷移後:

enter image description here

見前綴?

如果你關心這裏的堆棧跟蹤: 堆棧跟蹤:

Stack Trace: 


[SqlException (0x80131904): Invalid object name 'dbo.Posts'.] 
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +2073486 
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5064444 
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234 
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275 
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33 
System.Data.SqlClient.SqlDataReader.get_MetaData() +86 
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +311 
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987 
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162 
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32 
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141 
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12 
System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +10 
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +443 

[EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.] 
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) +479 
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute(ObjectContext context, ObjectParameterCollection parameterValues) +736 
System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +149 
System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +44 
System.Data.Entity.Internal.Linq.InternalQuery`1.GetEnumerator() +40 
System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator() +23 
System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() +40 
ASP._Page_Views_posts_Index_cshtml.Execute() in c:\PData\Bare Blog Blog Engine\Web\BareBlogAdmin\BareBlogAdmin\Views\Posts\Index.cshtml:48 
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207 
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +97 
System.Web.WebPages.StartPage.RunPage() +19 
System.Web.WebPages.StartPage.ExecutePageHierarchy() +65 
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76 
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +255 
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115 
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13 
System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +23 
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +260 
System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +19 
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +177 
System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +92 
System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +126 
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57 
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +45 
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14 
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +25 
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +61 
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +25 
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +49 
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +9 
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__4(IAsyncResult asyncResult) +28 
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +25 
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 
System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50 
System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7 
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60 
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8970061 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 

如果我跑LinqPad對我的主機的數據庫,它按預期工作,但不是我的MVC應用程序中使用的DbContext。

想法?我錯過了什麼?

+1

你是什麼意思與「怪胎」?你能顯示異常嗎?檢查連接字符串以及是否可以使用給定的用戶訪問數據庫。 – slfan

回答

0

固定它!

我通過SQL管理登錄到遠程數據庫,並將我的用戶的默認模式更改爲「dbo」。然後我刪除了我的舊桌子並重新遷移......一切都以「dbo.table-name」形式出現。冉我的應用程序 - 它工作!

唉真是痛苦。你可以告訴我......我不是DBA。 ;)