ローカル システム アカウントを使用して Windows WCF サービスを実行しています。サービス内から、ドメイン ユーザー アカウントで SMO を使用して SQL Server インスタンスに接続しようとしています。
以下に示すコードは、SQL Server 2014 SDK の SMO を使用している場合に正常に動作しますが、SQL Server 2016 CTP 3.2 SMO を使用すると、次のような例外がスローされます。
ユーザー {ドメイン}{ローカル マシン名} のログインに失敗しました
ここで、サーバー接続オブジェクトでドメイン管理者の資格情報を指定しました。
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 バイナリは、指定されたユーザー アカウントを偽装できないようです。
よろしく
アシッシュ