[NAnt] ビルド プロセスで Microsoft.SqlServer.Smo.dll バージョン 9.0.1399.0 を使用しています。Windows Server 2008 R2 で実行しています。Sql Server 2008 R2 (10.5) と Sql Server 2008 (10.0) の両方に接続しています。
プロジェクト タイプの 1 つのデプロイ ステップを微調整していますが、Sql ジョブをデプロイするすべてのビルドで (2008R2 10.5 サーバーに)、"ConnectAsUserName が設定されていません" というエラーがスローされます。
資格情報を指定すると、「この Sql Server バージョン (10.5) はサポートされていません」というエラーが表示されます。
しかし、Windows 認証を指定すると、「ConnectAsUserName が設定されていません」というエラーが表示されます。
他にどこを見るべきかわかりません。使用しているコードは次のとおりです。
using System;
using System.Collections.Generic;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo.Agent;
...
public void Schedule(string sqlServer, string userName, string password)
{
ServerConnection conn = new ServerConnection(sqlServer, userName, password);
conn.LoginSecure = false;
Server server = new Server(conn);
Schedule(server);
}
public void Schedule(string sqlServer)
{
ServerConnection conn = new ServerConnection(sqlServer);
conn.ConnectAsUser = false;
conn.LoginSecure = true;
Server server = new Server(conn);
Schedule(server);
}
public void Schedule(Server server)
{
server.JobServer.Refresh();
JobType.Refresh();
foreach (JobType job in Items)
job.Schedule(server);
}
また、エラーのスタックトレースは次のとおりです。
内部エラー: Microsoft.SqlServer.Management.Common.PropertyNotSetException プロパティ ConnectAsUserName が設定されていませんでした。
Microsoft.SqlServer.Management.Common.ConnectionSettings.ThrowIfPropertyNotSet (文字列 propertyName、文字列 str、ブール値 checkEmpty) で Microsoft.SqlServer.Management.Common.ConnectionManager.GetWindowsIdentityForConnection() で Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() で
Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect() で Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion() で Microsoft.SqlServer.Management.Smo.ExecutionManager.GetServerVersion() で Microsoft.SqlServer.Management.Smo Microsoft.SqlServer.Management.Smo.SqlSmoObject.CheckVersionNotExpress(String uft) の .SqlSmoObject.IsExpressSku ()
Microsoft.SqlServer.Management.Smo.Server.get_JobServer() の
NAnt.MVST.Tasks.ImportJobsTask.ExecuteTask(String xmlJobs) の SqlSchedule.Jobs.Schedule(サーバーサーバー) NAnt.MVST.Tasks.ImportJobsTask.ExecuteTask() の NAnt.Core .Task.Execute() で NAnt.Core.TaskContainer.ExecuteChildTasks() で NAnt.Core.TaskContainer.ExecuteTask() で NAnt.Core.Task.Execute()
で NAnt.Contrib.Tasks.TryCatchTask.ExecuteTask() で NAnt .Core.Task.Execute() で NAnt.Core.TaskContainer.ExecuteChildTasks() で NAnt.Core.Tasks.IfTask.ExecuteTask() で NAnt.Core.Task.Execute()
で NAnt.Core.TaskContainer.ExecuteChildTasks() NAnt.Core.Tasks.IfTask.ExecuteTask() で NAnt.Core.Task.Execute() で
NAnt.Core.TaskContainer.ExecuteChildTasks()で NAnt.Core.Tasks.IfTask.ExecuteTask()で NAnt.Core.Task.Execute()
で NAnt.Core.Target.Execute()で NAnt.Core.Project.Executeで(String targetName, Boolean forceDependencies) NAnt.Core.Tasks.CallTask.ExecuteTask() で NAnt.Core.Task.Execute() で NAnt.Core.TaskContainer.ExecuteChildTasks() で NAnt.Core.Tasks.IfTask.ExecuteTask( ) で NAnt.Core.Task.Execute()
で NAnt.Core.Target.Execute() で NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) で NAnt.Core.Tasks.CallTask.ExecuteTask() で NAnt .Core.Task.Execute() で NAnt.Core.Target.Execute() で NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) で NAnt.Core.Project.Execute() で NAnt.Core.Project.走る()
また、MSDN のドキュメントには、Windows 認証を使用している場合、このプロパティは無視されると記載されています...
私はstackoverflowでこの投稿を見つけました.私は唯一の答えですべてのことをしました(それは受け入れられませんでしたが)。誰かもうアイデアはありますか?