服务器主体" "无法访问数据库" "在当前的安全环境下

时间:2017-08-23 05:44:50

标签: c# sql asp.net database-connection left-join

在我的代码中,两个表已连接并且在本地Host中正常工作。但是当我连接相同的代码以实现代码时,代码不起作用。

连接字符串:

string constr = ConfigurationManager.ConnectionStrings["strconstr"].ConnectionString;

string constr = ConfigurationManager.ConnectionStrings["constrHOS"].ConnectionString;


 private void BindContactPerson(string hdnHospitalContactPersonID)
    {
        BD_Hospital iHospital = new BD_Hospital();
        string constr = ConfigurationManager.ConnectionStrings["constrHOS"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT D.DepartmentName,DS.DesignationName,hc.ContactPersonName,hc.ContactPersonAddress,hc.Mobile,hc.Phone,hc.AadhaarCardNo FROM HospitalContactPersonDeatils hc LEFT JOIN VAN_SETTING.[dbo].[Department] D ON D.DepartmentID =hc.DepartmentID LEFT JOIN VAN_SETTING.[dbo].[Designation] DS ON DS.DesignationID =hc.DesignationID where HospitalID='" + hdnHospitalContactPersonID + "'    ", con))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                {
                    DataTable dt = new DataTable();
                    sda.Fill(dt);
                    gvCustomers.DataSource = dt;
                    gvCustomers.DataBind();
                }
            }
        }
    }

错误图片:

**ERROR IMAGE**

2 个答案:

答案 0 :(得分:0)

通常它的端口问题可能被防火墙阻止,因此要检查我们是否使用从应用服务器到数据库服务器的telnet命令,如下所示:

在Windows命令中输入:

telnet database_ip_address_or_host_name port

Sql server案例:

telnet 192.168.1.1 1433

所以要解决你必须解决的问题:

  1. 在数据库服务器中打开数据库端口
  2. 确保没有防火墙阻止应用程序服务器中的应用程序连接到数据库
  3. how to open port in windows

答案 1 :(得分:0)

听起来应用程序池服务帐户和SQL登录之间的映射存在问题,或者可能是SQL登录和SQL用户帐户之间的映射问题。

解决此问题的最简单方法是以运行网站应用程序池的服务帐户身份登录。登录后,尝试打开SQL Server管理控制台并尝试使用集成身份验证访问数据库。无论您看到什么错误,都会出现与您的网站相同的错误。

可以在this question找到更多信息。

如果您不知道应用程序池服务帐户是什么,try this article

Click here if you don't know the difference between a SQL login and a SQL user