0

重複の可能性:
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 サイトのすべての指示に従っても無駄でした。

助けてくれてありがとう!

4

0 に答える 0