也许有人可以帮助我。我正在用C#编写一个程序来连接远程服务器上的数据库。有问题的服务器使用Windows身份验证。我也不是服务器的管理员。
无论如何使用SQL Server Management Studio连接到服务器,我必须使用不同的凭据。所以我使用runas.exe进行连接。
基本上,有些东西:
runas.exe / netonly / user:DIFFERENT_DOMAIN \ SAME_USERNAME“C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ Ssms.exe”
使用runas.exe是我连接数据库的唯一方法,如果我尝试运行没有runas的ssms,我根本就不会连接。
所以现在我的问题。在我用C#编写的程序中。如何让我的程序使用不同的凭据连接到同一个数据库而不必使用runas.exe?
我尝试过使用:
Sqlconnection sc = new Sqlconnection();
sc.ConnectionString = "Data Source= myServer;Initial Catalog= myDB;Integrated Security=true";
sc.Open();
但我得到“用户登录失败”。用户与可信的SQL Server连接无关。“
如果我使用上面的代码和Runas.exe使用正确的凭据。它会正常工作并连接。但是我不想使用它。
任何人都知道如何让连接正常工作?
答案 0 :(得分:3)
您可以使用c#代码模拟域用户。这个问题有一些例子:
答案 1 :(得分:1)
感谢谁说到Windows模拟!在查看了这个并在谷歌上搜索有关Windows模拟后,我遇到了
[DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)]
public static extern bool CreateProcessWithLogonW(
String userName,
String domain,
String password,
LogonFlags logonFlags,
String applicationName,
String commandLine,
CreationFlags creationFlags,
UInt32 environment,
String currentDirectory,
ref StartupInfo startupInfo,
out ProcessInformation processInformation);
看到登录标志为LOGON_NETCREDENTIALS_ONLY。它运作得很好。