我一直认为,为了使用具有显式指定凭据的Windows身份验证连接到SQL服务器,您必须使用LogonUser,Impersonate,然后连接.
在我看来,这个链接表明,只需在连接字符串中指定"uid = ...; pwd = ..."就可以连接到SQL服务器而不需要这么麻烦.我测试了这种方法只是为了确保它不起作用,而且 - 看哪 - 它没有.如果那个博客文章不在msdn.com上,我会把它当作noob talk解雇,但确实如此.
有谁知道我错过了什么?
编辑1:许多受访者误解了我的意思.这是我所说的复制/粘贴.它不是集成的SQL,也不是由IIS制作的ASP.NET模拟:
string sql4 = String.Format(
@"Data Source={0};Integrated Security=SSPI;uid=<uid>;pwd=<pid>", server);
// Database + Windows Authentication + Username/Password
Run Code Online (Sandbox Code Playgroud) 使用RODBC连接到Microsoft SQL Server时,我知道我可以执行以下操作:
con <- odbcDriverConnect(connection="driver={SQL Server};server=servername;database=dbname;trusted_connection=yes;")
Run Code Online (Sandbox Code Playgroud)
但是,这限制了我对当前Windows用户名使用Windows身份验证.我们的流程通常需要为不同的流程使用不同的登录凭据.如果我需要使用Windows身份验证使用不同的登录凭据,有没有办法手动执行此操作?例如,以下内容对我失败.
con <- odbcDriverConnect(connection="driver={SQL Server};server=servername;database=dbname;uid=domain\\username;pwd=passwd;")
Run Code Online (Sandbox Code Playgroud)
我以为我可以使用该格式,domain\\username但它永远不会工作,我只是不断收到这样的错误:
警告消息:1:在odbcDriverConnect(connection ="driver = {SQL Server}; server = servername; database = dbname; uid = domain\username; pwd = passwd"):[RODBC] ERROR:状态28000,代码18456,消息[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]用户'domain\username'登录失败
我担心的是,根据我在这个问题中找到的答案,这是不可能的.
这是相当令人沮丧的,因为如果我使用RSQLServer,我可以使用任意用户.
con <- dbConnect(RSQLServer::SQLServer(), "servername", database = "dbname",
properties = list(user = "username", password = "passwd",
useNTLMv2=TRUE, domain = "domain")
)
Run Code Online (Sandbox Code Playgroud)
我更喜欢RODBC在这种情况下使用,因为很多以前编写的代码依赖于RODBC特定的功能(例如sqlQuery)而不是DBI函数.