我一直认为,为了使用windows身份验证和显式指定的凭据连接到SQL server,您必须先LogonUser、模拟,然后再连接。
在我看来,this link建议可以轻松地连接到SQL server,只需指定"uid=...;pwd=...“在连接字符串中。我测试了这个方法,以确保它不起作用--瞧,看--它不起作用。如果那篇博客文章不是在msdn.com上,我会把它当作菜鸟谈话而不屑一顾,但它确实起作用了。
有人知道我错过了什么吗?
EDIT1:许多受访者误解了我指的是什么。这是我所说的内容的一个拷贝/粘贴。它既不是集成的SQL,也不是IIS制作的ASP.NET模拟:
string sql4 = String.Format(
@"Data Source={0};Integrated Security=SSPI;uid=<uid>;pwd=<pid>", server);
// Database + Windows Authentication + Username/Password
发布于 2009-05-06 22:35:24
SQL Server有两种截然不同的安全性。"Windows身份验证“和"SQL Server身份验证”。当您看到uid和pwd时,您看到的是后者。本例中的uid不是Windows主体-操作系统对此一无所知。
因此,您的问题的答案是,没有,您不能在连接字符串中传递Windows用户名和密码来登录SQL Server。
发布于 2009-05-06 18:16:14
这取决于-如果你从命令行或Winforms应用程序直接连接到你的SQL Server,你要么指定“集成Security=SSPI;”,然后使用你的Windows凭据作为登录凭据,或者你指定“UserSQL.....”-但那是id=....;pwd=登录-而不是你的Windows登录。
你提到“模拟然后连接”--这似乎表明了ASP.NET --这又是一个完全不同的故事。如果你模拟,那么你基本上是在使用你的Windows凭据,例如,web服务器将“模拟”你并以你的身份登录(使用你的Windows凭据)。在这种情况下,再一次,没有"uid=....;pwd=.....“需要指定(如果是,它将被忽略)。
正如您提到的链接清楚地显示的那样-如果您可以直接连接,并且您指定了“集成Security=SSPI;",那么它将优先于任何uid=...;pwd=……你也可以指定并使用你的Windows凭证登录;那些额外的uid=...;pwd=...片断将被忽略。
Marc
发布于 2009-05-06 19:18:23
本文讨论的是SQL安全性,而不是集成安全性。如果启用了SQL身份验证(混合模式),则可以传递SQL用户的凭据并以此方式登录。如果将SQL服务器设置为仅使用集成安全性,则这将不起作用。允许使用Windows登录凭据登录也不起作用。
https://stackoverflow.com/questions/830929
复制相似问题