azure 不支持“MultipleActiveResultsSets”关键字

brc7rcf0  于 2023-03-19  发布在  其他
关注(0)|答案(5)|浏览(205)

我试图通过在Visual Studio 2013中创建的ASP.NET WebForms网站从托管在MS Azure上的SQL Server数据库中读取。
我已将连接字符串存储在Web.config中,并在代码隐藏中引用了它。
但是,当我尝试在本地运行Default.aspx时,显示this错误。
下面是我的Web配置:

<connectionStrings>
     <add name="FYPConnectionString1" 
     connectionString="Data Source=damo.database.windows.net‌​;Initial Catalog=Ballinora_db;         
     Persist Security Info=True; User ID={Username};Password={Password};" />
  </connectionStrings>

我从连接字符串中删除了“MultipleActiveResultsSets=False”,以查看错误是否停止,但现在错误显示为“Encrypt”。
所以错误出现在连接字符串的密码部分之后的下一个项目中。密码是否与问题有关?
此外,此用户名和密码是必需的,它们是Azure门户中显示的服务器管理员登录详细信息吗?
以下是代码隐藏:

private void bindRepeater()
{
    string constr = ConfigurationManager.ConnectionStrings["FYPConnectionString1"].ConnectionString;  
    //-- assuming Azure connection string stored in ConnectionString config in Web.Config as YourConnString 
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT Name FROM Users", con))
        {
            cmd.CommandType = CommandType.Text;
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            repTest.DataSource = dt;
            repTest.DataBind();
            con.Close();
        }
    }
}

protected void btnDisplay_Click(object sender, EventArgs e)
{
    this.bindRepeater();
}
92dk7w1h

92dk7w1h1#

“MultipleActiveResultsSets”键入错误。其中的“结果”不是复数。
正确方法:“多个活动结果集”。

pinkon5k

pinkon5k2#

发现此问题的其他人请注意:如果你忘记在Azure配置中为连接字符串选择正确的类型(数据提供程序),也会发生这种情况。我在选择MySQL而不是SQLAzure时发生了这种情况。由于关键字不在该提供程序上,因此会导致错误。

zsohkypk

zsohkypk3#

多个活动结果集的默认值为False。
如果你不需要这个函数,只需从connectionstring中取出(删除)'MultipleActiveResultSets =False '即可。
因为默认值是false,如果你想要false,你不需要特意写它。
当我们在第一个SQL连接的SqlDataReader的while循环中打开第二个SQL连接时,我们需要MultipleActiveResultSets函数。
然而,为什么' MultipleActiveRe' sultSets=False '被识别为错误的语法仍然是个问题。
最新消息-
这就是为什么我很好奇为什么它是错误的。我认为MultipleActiveResultSets和Encrypt的语法没有问题。
下面是Web.Config中的连接字符串:

<connectionStrings>
     <add name="GreenLeaf"  connectionString="Server=tcp:greentree.database.secure.windows.net,1433;Database=greentea;User ID=greenusers@greentree;Password=abc123;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;MultipleActiveResultSets=True;"/>
</connectionStrings>

与你的不同之处在于,
1)tcp 2)安全3)@greentree(服务器名greentree连同ID,如(greenusers@greentree)4),没有提供程序
“安全”是Azure自动提供安全连接的新功能,您可以在Internet上找到此功能。
检查服务器的防火墙,只是尝试给予以上几点一杆.
使用管理员ID是正确的,但在安全方面,您需要为角色和权限有限的外部用户创建额外的登录名和用户。
是否可以通过Azure门户?Visual Studio?服务器管理工作室连接到Azure服务器(数据库)?
当您进入Server Management Studio时,在弹出的连接窗口中,有“服务器名称”。在那里输入“greentree.database.windows.net”,然后尝试使用您的管理员凭据登录。
或者,是否可以在Web.Config中不使用connectionString而使用纯代码连接到Azure Server?
如果可能的话,请更新例外的屏幕截图,而不仅仅是文本。
最后,我相信你很清楚,为了安全起见,我们需要加密connectionString。

b5lpy0ml

b5lpy0ml4#

我也遇到了这个问题。对我来说,我创建的密码包含分号,密码泄漏到连接字符串的下一部分。
我去掉了密码中的分号,它起作用了。
例如密码的结尾是“j;.&6"。我得到的错误是
不支持“- $exception {“关键字:'**.&6;**多个活动结果集'."}系统参数异常”

jaxagkaj

jaxagkaj5#

在我的情况下,我删除
MultipleActiveRe‌​‌​sultSets=True
来自web.config中的连接字符串
而且它的工作很好。

相关问题