无法在C#中访问远程数据库

时间:2015-11-30 07:49:56

标签: c# sql-server asp.net-mvc visual-studio windows-authentication

我已将连接字符串更改为指向远程服务器中的数据库。但是当我执行项目时,程序仍然指向本地数据库。

<entityFramework>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>


<connectionStrings> 
<add name="TEDALS_Ver01.DAL.TedalsContext" 
  connectionString="Data Source=FE0VMC0643\SQLEXPRESS;
  AttachDbFilename=|DataDirectory|\TeDaLSdev.mdf;
  Integrated Security=False" 
  providerName="System.Data.SqlClient" 
/>
<!--<add
   name="TEDALS_Ver01.DAL.TedalsContext"
   connectionString="Server=FE0VMC0643; Database=TeDaLSdev; "
   providerName="System.Data.SqlClient" />-->

<!--<add name="TEDALS_Ver01.DAL.TedalsContext"
     providerName="System.Data.SqlClient" 
     connectionString="Server=FE0VMC0643;Data Source=FE0VMC0643;
     Initial Catalog=TeDaLSdev;
     Integrated Security=True;
     Connect Timeout=15;
     Encrypt=False;
     TrustServerCertificate=False;" />-->

</connectionStrings> 

评论是我到目前为止所遇到的不同连接字符串。我在使用LocalDB时从未有过连接字符串。

连接构造函数

public class TedalsContext : DbContext
{
    public TedalsContext()
        : base("TedalsContext")
    {
        //Database.SetInitializer<TedalsContext>(null);
    }
}

我正在使用SQL Server Express作为我的数据库。我还尝试在构造函数中更改base的参数名称作为数据库的名称。但它没有改变任何东西。

如果我可以通过SSMS访问数据库,我已经尝试过了。我能够创建表,但我无法重命名数据库(我没有重命名数据库TeDalSdev的访问权限。)

还有其他可以尝试的工作吗?远程数据库和本地数据库的名称是否应该相同,以避免更改大量代码?

更新

控制器

public class LsystemFamiliesController : Controller
{
    private TedalsContext db = new TedalsContext();
    //Code goes here
}

2 个答案:

答案 0 :(得分:4)

我已经从我的某个项目的Web配置文件和(应该)检查的所有字段添加了一个连接字符串。这在<connectionStrings>标签内。您需要将其设置为默认连接,并且只能将一个连接字符串作为默认连接。

<add name="DefaultConnection" providerName="System.Data.SqlClient" 
    connectionString="Data Source=Providedbyhost;integrated 
    security=false;Initial Catalog=DB_Name;User Id=UserId;Password=password;
    Trusted_Connection=false; TrustServerCertificate=true;
    Encrypt=true;MultipleActiveResultSets=True" />

您拥有数据库上下文的位置:

public TedalsContext()
    : base("DefaultConnection")

将所有内容切换到DefaultConnection,直到它正常工作,然后您可以专注于更改名称。注释掉本地数据库连接字符串。如果你需要(甚至将其保存在别处),甚至在测试时将它从项目中删除。

我还添加了my folder目录的屏幕截图,以显示我正在修改的web配置文件夹。看到它以蓝色突出显示。

enter image description here

此屏幕截图还显示了在VS中测试连接字符串的导航位置。

enter image description here

我建议你看看这里:

How to: Access SQL Server Using Windows Integrated Security

What will be the connectionstring for mssql windows authentication

和此:

Connection string using Windows Authentication

正如我在讨论中所建议的那样。我建议也联系网络托管服务提供商,因为我遇到了这个问题,它无法连接,这在托管端是一个问题。

如果您需要更多帮助,请大声喊叫。

答案 1 :(得分:0)

在您的TedalsContext构造函数下,使用: base(connectionStringName)

否则,上下文会首先将其视为代码,并在SQLExpress Local DB中创建TedalContext。

public class TedalsContext : DbContext
{
    public TedalsContext()
        : base("TEDALS_Ver01.DAL.TedalsContext")
    {
        //Database.SetInitializer<TedalsContext>(null);
    }
}