c# - Azure 云服务无法仅在执行写入操作时连接到 SQL 数据库

标签 c# sql-server azure database-connection visual-studio-lightswitch

我在 lightswitch 中开发了一个网络应用程序。有一个 HTML lightswitch 客户端连接到服务器 (C#),该服务器从 SQL 数据库获取数据。

应用程序在我的本地计算机中正常工作,当我将解决方案发布到 Azure 中的云服务时出现问题。然后,服务器正确连接到数据库并可以从中读取所有信息,但是当我尝试从应用程序内更新数据库(插入或更新行)时,应用程序卡住并提示以下错误:

Unable to connect to SQL Server database. Inner exception message: Unable to connect to SQL Server database. Inner exception message: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

我已经检查了连接参数,所有参数都是正确的,这是我的 web.config 中的连接字符串:

<add name="My_Data" connectionString="data source=tcp:{MyServer}.database.windows.net,1433;initial catalog={myDatabase};user id={Myuser}@{MyServer};password={MyPassword};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" />

我见过其他有同样问题的问题,但所有问题都是因为数据库或服务器不可用。我连接到服务器没有问题,因为我可以毫无问题地查询我的数据库。

当我尝试在数据库中写入时,会出现错误,因为我单击了灯开关屏幕的保存按钮,或者因为我通过服务器中的代码执行此操作:

serverContext.DataWorkspace.My_Data.SaveChanges();

如果我注释掉上一行,则不会提示错误。

我还检查了数据库中的用户权限,这个用户是db_owner,所以应该没有问题。

有人遇到过这样的问题吗?

最佳答案

我找到了解决方案!

经过深入研究,我发现Azure服务器正在向我的应用程序添加连接字符串(我不知道如何也不知道为什么)。该连接字符串是从某处继承的,它指向 SQL Express 的本地实例。显然,该实例不存在,因此超时后应用程序会抛出上面所示的错误。

我真的不知道为什么会发生这种情况,也不知道为什么只有当我尝试写入数据库时​​才会发生这种情况。我找到的解决方案是在 web.config 的连接字符串部分添加以下内容:

<clear />

这样,我们就删除了继承的连接字符串。现在,我们必须设置 LocalSqlServer 的连接字符串(这将是我们的连接字符串,指向 Azure 中的远程 SQL Server 的连接字符串):

<add name="LocalSqlServer" connectionString="Data Source={SERVER}.database.windows.net;Initial Catalog={DATABASE};Integrated Security=False;User ID={USER}@{SERVER};Password={PASSWORD};Encrypt=True" />

现在,一切正常。我希望这可以帮助任何与我面临同样问题的人,我真的很想知道为什么会发生这种情况,所以如果有人知道,请告诉我:)

关于c# - Azure 云服务无法仅在执行写入操作时连接到 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523538/

相关文章:

c# - 使用和垃圾收集

c# - Unity 3D 中的角色 Controller 碰撞和斜坡

c# - 检测在 C# 中运行的平台代码?

c# - 获得与在静态类中实现接口(interface)相同的功能的另一种方法是什么?

sql-server - Excel.Application 不能使用 SQL 作业在 PowerShell 中运行,但可以从命令行运行

不使用游标为每行调用 SQL 存储过程

sql-server - 如何从 Visual Basic 6 连接到 Sql Server 2008 数据库?

mongodb - 有什么方法可以在 Azure 中对 MongoDB 进行分析吗?

azure - user_impersonation 范围 - 为什么?

r - 在 Azure 中创建运行 R 脚本的管道,而无需通用化 VM