C#无法访问远程数据库
unable to access remote database in C#
我已将连接字符串更改为指向远程服务器中的数据库。但是当我执行项目时,程序仍然指向本地数据库。
<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
}
我已经从我的一个项目的网络配置文件中添加了一个连接字符串,并添加了(应该)检查的所有字段。这是在 <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,直到它正常工作,然后您可以专注于更改名称。注释掉您的本地数据库连接字符串。如果需要,甚至可以将其从项目中删除(并将其保存在其他地方),同时进行测试。
我还添加了我的文件夹目录的屏幕截图,以显示我正在修改的 Web 配置文件夹。看到它以蓝色突出显示。
此屏幕截图还向您展示了在 VS 中导航到哪里来测试您的连接字符串。
我建议你看这里:
How to: Access SQL Server Using Windows Integrated Security
What will be the connectionstring for mssql windows authentication
还有这个:
Connection string using Windows Authentication
正如我在讨论中所建议的那样。我还建议您联系网络托管服务提供商,因为我遇到过无法连接的问题,而且这是托管端的问题。
如果您需要更多帮助,请大声喊出来。
在您的 TedalsContext 构造函数下,使用 : base(connectionStringName)
。
否则,上下文首先会将其视为代码并在您的 SQLExpress 本地数据库中创建一个 TedalContext。
public class TedalsContext : DbContext
{
public TedalsContext()
: base("TEDALS_Ver01.DAL.TedalsContext")
{
//Database.SetInitializer<TedalsContext>(null);
}
}
我已将连接字符串更改为指向远程服务器中的数据库。但是当我执行项目时,程序仍然指向本地数据库。
<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
}
我已经从我的一个项目的网络配置文件中添加了一个连接字符串,并添加了(应该)检查的所有字段。这是在 <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,直到它正常工作,然后您可以专注于更改名称。注释掉您的本地数据库连接字符串。如果需要,甚至可以将其从项目中删除(并将其保存在其他地方),同时进行测试。
我还添加了我的文件夹目录的屏幕截图,以显示我正在修改的 Web 配置文件夹。看到它以蓝色突出显示。
此屏幕截图还向您展示了在 VS 中导航到哪里来测试您的连接字符串。
我建议你看这里:
How to: Access SQL Server Using Windows Integrated Security
What will be the connectionstring for mssql windows authentication
还有这个:
Connection string using Windows Authentication
正如我在讨论中所建议的那样。我还建议您联系网络托管服务提供商,因为我遇到过无法连接的问题,而且这是托管端的问题。
如果您需要更多帮助,请大声喊出来。
在您的 TedalsContext 构造函数下,使用 : base(connectionStringName)
。
否则,上下文首先会将其视为代码并在您的 SQLExpress 本地数据库中创建一个 TedalContext。
public class TedalsContext : DbContext
{
public TedalsContext()
: base("TEDALS_Ver01.DAL.TedalsContext")
{
//Database.SetInitializer<TedalsContext>(null);
}
}