简体   繁体   English

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

[英]unable to access remote database in C#

i have changed the connection string to point to a database in the remote server. 我已经更改了连接字符串以指向远程服务器中的数据库。 But when I execute the project the program still points to the local db. 但是当我执行项目时,程序仍然指向本地数据库。

<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> 

Comments are the different connection strings i have treid so far. 注释是到目前为止我一直在讨论的不同连接字符串。 i never had a connections string when I was using the LocalDB. 使用LocalDB时,我从来没有连接字符串。

Constructor for Connection 连接的构造函数

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

i am using SQL Server Express as my database. 我正在使用SQL Server Express作为数据库。 I have also tried changing the name of the parameter for base in constructor as the name of the Database. 我还尝试过将构造函数中base的参数名称更改为Database的名称。 But it did not change anything. 但这并没有改变任何东西。

I have already tried if I have access to the database through SSMS. 我已经尝试过是否可以通过SSMS访问数据库。 I am able to create tables but I am unable to rename the database as such(I do not have access rights to rename the database TeDalSdev). 我能够创建表,但不能这样重命名数据库(我没有访问权来重命名数据库TeDalSdev)。

Are there any other work around i could try? 我可以尝试其他解决方法吗? Should the name of the remote database and the local database should be the same to avoid changing a lot of code? 远程数据库的名称和本地数据库的名称应该相同,以避免更改大量代码吗?

UPDATE UPDATE

Controller 调节器

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

I've added a connection string from a web config file of one of my projects and all the fields that (should) be checked. 我从一个项目的Web配置文件中添加了一个连接字符串,并(应)检查了所有字段。 This is within the <connectionStrings> tags. 这在<connectionStrings>标记内。 You need to make it your default connection and you can only have one connection string as the default connection. 您需要将其设置为默认连接,并且只能使用一个连接字符串作为默认连接。

<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" />

Where you have your DB Context: 您拥有数据库上下文的位置:

public TedalsContext()
    : base("DefaultConnection")

Switch everything to DefaultConnection, until you get it working, then you can focus on changing names. 将所有内容切换到DefaultConnection,直到您可以正常使用为止,然后您可以集中精力更改名称。 Comment out your local db connection strings. 注释掉您的本地数据库连接字符串。 Even remove it from the project if you need to (and save it elsewhere), while you are testing this. 在测试时,甚至需要将其从项目中删除(并将其保存在其他位置)。

I've also added a screen shot of the my folder directory, to show which web config folder I am modifying. 我还添加了我的文件夹目录的屏幕快照,以显示我正在修改的Web配置文件夹。 See it's highlighted in blue. 看到它以蓝色突出显示。

在此处输入图片说明

Also this screen shot shows you where to navigate to test your connection string within VS. 此屏幕快照还向您显示了在VS中导航到哪里以测试连接字符串的位置。

在此处输入图片说明

I suggest you look here: 我建议你看这里:

How to: Access SQL Server Using Windows Integrated Security 如何:使用Windows集成安全性访问SQL Server

What will be the connectionstring for mssql windows authentication mssql Windows身份验证的连接字符串是什么

and this: 和这个:

Connection string using Windows Authentication 使用Windows身份验证的连接字符串

As I suggested in the discussion. 正如我在讨论中所建议的。 I recommend also contacting web hosting provider, as I have had this problem where it will not connect and it's been a problem at the hosting end. 我建议也与Web托管提供商联系,因为我遇到了无法连接的问题,并且在托管端出现了问题。

If you need more help, shout out. 如果您需要更多帮助,请大声喊叫。

Under your TedalsContext constructor, use : base(connectionStringName) . 在您的TedalsContext构造函数下,使用: base(connectionStringName)

Otherwise, the context will treat it as code first and create a TedalContext inside your SQLExpress Local DB. 否则,上下文将首先将其视为代码,并在SQLExpress Local DB中创建一个TedalContext。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM