如何覆盖 Azure 门户中的 Azure Sql 连接

How to override Azure Sql connection in Azure portal

我尝试使用此连接覆盖 Azure 门户中的 connectionstring

Server=tcp:server.database.windows.net,1433;Database=mydatabase;User ID=username@server;Password=xxxxxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;

它给我一个错误 Keyword not supported: 'server' 当我尝试它时:

metadata=res://*/DataAccess.MyDataBase.csdl|res://*/DataAccess.MyDataBase.ssdl|res://*/DataAccess.MyDataBase.msl;provider=System.Data.SqlClient;provider connection string="data source=tcp:server.database.windows.net,1433;initial catalog=MyDataBase;persist security info=True;user id=username@server;password=xxxxxx;MultipleActiveResultSets=True;App=EntityFramework""

给出"Keyword not supported: 'metadata'.!!

那么 connectionstring 我应该写什么??

我还尝试了屏幕截图中提供的所有连接字符串类型。

第一个连接字符串('Server=..')用于直接连接数据库,不经过Entity Framework。
第二个连接字符串 ('metadata=..') 是一个 Entity Framework 连接字符串。如果您使用的是 EF,则应将 Azure 管理门户中的连接字符串标记为 'Custom' 而不是 'SQL Database'.

好的,我找到了与我的问题相关的 answer,但我也发现了一些东西

所有连接字符串的第一个应该像

metadata=res://*/DataAccess.MyDataBase.csdl|res://*/DataAccess.MyDataBase.ssdl|res://*/DataAccess.MyDataBase.msl;provider=System.Data.SqlClient;provider connection string="Server=tcp:server.database.windows.net,1433;Database=MyDataBase;User ID=username@server;Password=xxxxxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"

注意 quotation 应该是 " 而不是 " ,正如 Nick 所说应该是 Custom .

在控制面板中,数据库面板上有一个显示 "Show database connection strings" 的位置,它为您提供 ADO.Net、PHP、[=22] 的完整数据库连接字符串=] 和 ODBC。这些可以作为起点,我从中添加了 MARS 支持和一个不同的 user/password。

这是我的连接字符串,可以帮助您解决问题。我们使用这个来覆盖 Azure WebApps 控制面板。

Server=tcp:[AZURE_DB_NAME].database.windows.net,1433;Database=[DATABASE_NAME];User ID=[USER_ID];Password=[PASSWORD];Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;MultipleActiveResultSets=True

关于下拉列表,我们将其设置为 SQL 数据库。

想到一件事。您是否尝试过在 VS 调试模式下使用连接字符串来查看会发生什么?您只需将 AzureDB 配置为允许从您的 IP 进行远程连接即可。它可以让您了解您的连接是正确的,但其他东西失败了。

我尝试了 Mohamed Farrag 的解决方案,但遇到了这个错误:

System.ArgumentException: Keyword not supported: '.ssdl|res://*/dataaccess.MyDataBase.msl;provider'.

从我的连接字符串中删除 DataAccess. 后它起作用了:

metadata=res://*/MyDataBase.csdl|res://*/MyDataBase.ssdl|res://*/MyDataBase.msl;provider=System.Data.SqlClient;provider connection string="Server=tcp:server.database.windows.net,1433;Database=MyDataBase;User ID=username@server;Password=xxxxxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"