20

我的网页位于安全服务器 (https) 上,我正在尝试连接 SQL Server 2008 数据库,这是普通服务器。我在页面本身上写连接字符串,而不是在 web.config 文件中。我收到以下错误:-

System.Data.SqlClient.SqlException: Login failed.
The login is from an untrusted domain and cannot be used with Windows authentication.

请帮忙,我该如何连接它,我是否必须为它做一些网络服务。

我的代码如下:

public void FillCity()
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "integrated security=SSPI;data source=dev-fcb; user id=sa;password=password;" 
    +"persist security info=False;database=mediapro";
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = new SqlCommand("select * from StateCityMaster where IsActive='1' order by CityName", con);
    DataSet ds = new DataSet();
    da.Fill(ds);
    string CityName = string.Empty;
    if (ds.Tables[0].Rows.Count > 0)
    {
        CityName = ds.Tables[0].Rows[0]["CityName"].ToString();
    }
    DataSet dset = new DataSet();
    da.Fill(dset);
    if (dset.Tables[0].Rows.Count > 0)
    {
        drpCity.DataSource = dset;
        drpCity.DataTextField = "CityName";
        drpCity.DataValueField = "CityName";
        drpCity.DataBind();
    }
    drpCity.Items.Insert(0, new ListItem("--Select--", "0"));
    con.Close();
}
4

4 回答 4

37

您的连接字符串告诉它使用集成安全 SSPI,它将使用 Windows 凭据。

如果您要提供用户名和密码,请设置Integrated Security为。false

此外,考虑将连接字符串放在 web.config 文件中 - 它更安全且可重用。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=VS.100).aspx

如果为 false,则在连接中指定用户 ID 和密码。如果为 true,则使用当前 Windows 帐户凭据进行身份验证。识别值为true、false、yes、no、sspi(强烈推荐),相当于true。如果指定了 User ID 和 Password 并且 Integrated Security 设置为 true,则 User ID 和 Password 将被忽略并使用 Integrated Security。

于 2013-01-05T18:24:57.897 回答
5

我创建了一个新的 Asp.Net Core MVC 站点,但我遇到了同样的错误。我试图在通过 VPN 连接到网络时连接到我公司的数据库。这对我有用:

代替

"DevConnection": "Server=DevDBServer;Database=MyDatabase;User ID=some_userid;Password=some_password;Integrated Security=SSPI;Trusted_Connection=True;"

我用了

"DevConnection": "Server=DevDBServer;Database=MyDatabase;User ID=some_userid;Password=some_password;Integrated Security=False;Trusted_Connection=False;"

关键更改是确保 Trusted_Connection=False,这与错误消息一致。通常我不会使用不受信任的连接。在这种情况下,我连接到一个开发/测试数据库,所以很好。

于 2019-10-16T16:33:28.220 回答
1

对于未来的谷歌人:

如果您确实需要Integrated Security并且遇到此错误,则可能是您使用的是 alocal account而不是domain account.

我遇到了这个在本地运行的 Visual Studio 并试图连接到另一台机器上的数据库。一种解决方法是以不同的用户身份运行 Visual Studio,提示不起作用,但运行下面的命令可以(确保替换DOMAIN\USER,您将被要求提供凭据):

runas /netonly /user:DOMAIN\USER "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.exe"

(这是针对 VS2019 的,您的路径可能会有所不同)。

于 2019-09-25T09:02:26.963 回答
0

老问题,我的症状略有不同,但错误相同。我的连接字符串是正确的(集成安全性,我不提供用户和密码)data source设置为127.0.0.1. 多年来它工作得很好。

但是最近我在静态主机文件中添加了一行用于测试目的(C:\Windows\System32\drivers\etc\hosts

127.0.0.1           www.blablatestsite.com

删除这一行,错误就消失了。

我从这篇关于主机名和环回的文章 ( https://support.microsoft.com/en-gb/kb/896861 ) 中得到了线索。

其他可能的解决方法(如果您需要将该行保留在 hosts 文件中)是使用主机名(如MYSERVER01)而不是连接字符串中的127.0.0.1data source

于 2016-06-16T08:26:01.253 回答