重複の可能性:
SQL Server への接続に使用する文字列は?
C# でカスタム CRM ワークフロー アクティビティを使用して、ローカルの SQL Server 2008 R2 でジョブをリモートで実行しようとしています。ただし、ワークフローを実行すると (ドメインで「すべてのアクセス」を持つように設計されたユーザー名とパスワードを使用して)、次のエラーが発生します。
エラーのため、ワークフローが一時的に中断されました: 未処理の例外: Microsoft.SqlServer.Management.Common.ConnectionFailureException:
サーバー hbssql2008.hbsys.com への接続に失敗しました。
Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
で ExecuteSQLJob.ExecuteSQLJob.Execute(CodeActivityContext コンテキスト)
で System.Activities.CodeActivity.InternalExecute (ActivityInstance インスタンス、ActivityExecutor エグゼキューター、BookmarkManager ブックマーク マネージャー)
で System.Activities.Runtime.ActivityExecutor .ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor エグゼキューター、BookmarkManager ブックマークマネージャー、場所、結果場所)内部例外: System.Data.SqlClient.SqlException: ユーザー 'hbsProcessAD' のログインに失敗しました。
System.Data.SqlClient.SqlInternalConnection.OnError (SqlException 例外、ブール型 breakConnection)
で System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
で System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj)
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
で System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo、文字列 newPassword、Boolean redirectedUserInstance、SqlConnection owningObject、SqlConnectionString connectionOptions、TimeoutTimer タイムアウト)
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject、TimeoutTimer タイムアウト、SqlConnectionString connectionOptions、文字列 newPassword、Boolean redirectedUserInstance)
で System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity ID、SqlConnectionString connectionOptions、オブジェクト providerInfo、文字列 newPassword
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection の System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions オプション、オブジェクト poolGroupProviderInfo、DbConnectionPool プール、DbConnection owningConnection) のSqlConnection owningObject、Boolean redirectedUserInstance)
(DbConnection owningConnection、DbConnectionPool プール、DbConnectionOptions オプション)
System.Data.ProviderBase.DbConnectionPool.CreateObject (DbConnection owningObject)
で System.Data.ProviderBase.DbConnectionPool.UserCreateRequest (DbConnection owningObject) で
ロードしたカスタム アクティビティは次のとおりです。
namespace ExecuteSQLJob
{
[CrmWorkflowActivity("A test activity to run SQL Jobs")]
public sealed class ExecuteSQLJob : System.Activities.CodeActivity
{
#region Inputs
[Input("Job Name")]
[Default("BMS_ExtractTransformLoad")]
public InArgument<String> JobName { get; set; }
[Input("Server Connection")]
[Default("-----")]
public InArgument<String> ServerName { get; set; }
[Input("User Name")]
[Default("-----")]
public InArgument<String> UserName { get; set; }
[Input("Password")]
[Default("-----")]
public InArgument<String> Password { get; set; }
#endregion
protected override void Execute(CodeActivityContext context)
{
Server server = new Server(ServerName.Get(context));
try
{
//Create server connection
server.ConnectionContext.LoginSecure = false;
server.ConnectionContext.Login = UserName.Get(context);
server.ConnectionContext.Password = Password.Get(context);
server.ConnectionContext.Connect();
//Find and execute the Job
Job job = server.JobServer.Jobs[JobName.Get(context)];
job.Start();
}
finally
{
//Close out of the server (if it managed to connect)
if (server.ConnectionContext.IsOpen)
{
server.ConnectionContext.Disconnect();
}
}
}
}
}
また、この Web サイトのすべての指示に従っても無駄でした。
助けてくれてありがとう!