我正在使用本地系统帐户运行 Windows WCF 服务,并且在我们尝试使用 SMO 和域用户帐户连接到 SQL Server 实例的服务中。
下面显示的代码工作正常,我正在使用 SQL Server 2014 SDK 中的 SMO,但是如果我使用 SQL Server 2016 CTP 3.2 SMO,那么它会抛出一个异常,说明
用户 {domain}{local machine name} 登录失败
其中我在服务器连接对象中提供了域管理员凭据。
var srvConnectionConn = new ServerConnection("WIN-DVGQDI73QR6");
srvConnectionConn.ConnectAsUser = true;
srvConnectionConn.ConnectAsUserName = @"administrator@mva";
srvConnectionConn.ConnectAsUserPassword = "*****";
srvConnectionConn.ConnectTimeout = 60;
srvConnectionConn.NonPooledConnection = true;
Server srv = new Server(srvConnectionConn);
srv.SetDefaultInitFields(typeof(LogFile), "Name", "FileName");
srv.SetDefaultInitFields(typeof(FileGroup), "Name");
srv.SetDefaultInitFields(typeof(DataFile), "Name", "FileName");
Database db = srv.Databases["DB_H"];
bool bRemote = db.RemoteDataArchieveEnabled;
注意:如果我通过域管理员帐户而不是本地系统帐户运行我的 Windows 服务,那么下面的代码可以正常工作,没有任何异常。
看起来 SQL 2016 SMO 二进制文件无法模拟给定的用户帐户。
问候
阿什什