C# 连接字符串的正确提供程序格式

C# 连接字符串的正确提供程序格式,c#,asp.net-mvc-4,connection-string,C#,Asp.net Mvc 4,Connection String,可能是一个简单的问题,但事实证明我很难找到适合我的情况的答案 使用Visual Studio express 2012的MVC 4、C#应用程序 我遵循这一点,尝试将连接字符串从本地数据库(works)切换到在线托管的MS SQL数据库(1和1服务器) 在线提供商提供的连接信息为: Provider=sqloledb;Data Source=db501044113.db.1and1.com,1433;Initial Catalog=db501044113;User Id=dbo501044113

可能是一个简单的问题,但事实证明我很难找到适合我的情况的答案

使用Visual Studio express 2012的MVC 4、C#应用程序

我遵循这一点,尝试将连接字符串从本地数据库(works)切换到在线托管的MS SQL数据库(1和1服务器)

在线提供商提供的连接信息为:

Provider=sqloledb;Data Source=db501044113.db.1and1.com,1433;Initial Catalog=db501044113;User Id=dbo501044113;Password=*****;
我的连接字符串是:

<add name="RCDBContext"
     connectionString="Data Source=db501044113.db.1and1.com,1433;Initial Catalog=db501044113;User Id=dbo501044113;Password=*****" 
     providerName="System.Data.SqlClient" 
/>

加载页面时,我遇到一个权限被拒绝的错误:
CREATE DATABASE permission denied in DATABASE'master'。

为什么要创建现有数据库?

我找到的大多数谷歌答案都是关于服务器端权限的。因为我的数据库是由第三方托管的,所以我无权访问这些权限。看起来我也不需要它,因为这是一项常见的服务

我真的需要更改服务器端权限,还是我的应用程序出了问题?

也许首先与实体框架和代码有关


我尝试在连接字符串中使用
Provider=sqloledb
,但得到了不同的错误。对于这种类型的提供程序,我是否应该使用除
providerName=“System.Data.SqlClient”
以外的其他方法?

问题不在于连接字符串,而在于试图重新生成数据库的代码

System.Data.Entity.Database.SetInitializer(新的CreateDatabaseIfNotExists());

我的解决方案最终是一种不同类型的初始值设定项。而是设置以下三个选项之一:

  • CreateDatabaseIfNotExists
  • DropCreateDatabaseAlways
  • DropCreateDatabaseIfModelChanges
我只是将其设置为
null
,如下所示:

Database.SetInitializer<RCDBContext>(null);

谢谢你的评论。我读了一些关于这方面的内容,看起来代码应该在
Application\u Start()
中。如果找不到,这仍然会尝试创建一个新的,这可能是我的问题,因为我仍然会遇到相同的错误。还有其他建议吗?
Database.SetInitializer<RCDBContext>(null);
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();

        Database.SetInitializer<RCDBContext>(null);
    }