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 context)
在 System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor 执行器, BookmarkManager bookmarkManager)
在 System.Activities.Runtime.ActivityExecutor .ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor 执行器, BookmarkManager 书签管理器, Location resultLocation)

内部异常: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, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject,TimeoutTimer 超时,SqlConnectionString connectionOptions,String newPassword,Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识,SqlConnectionString connectionOptions,对象 providerInfo,字符串 newPassword,
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,对象 poolGroupProviderInfo,DbConnectionPool 池,DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection,DbConnectionPool 池,DbConnectionOptions 选项)的SqlConnection owningObject,布尔重定向用户实例)
在 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();
                }
            }
        }
    }
}

此外,我已按照本网站的所有说明进行操作,但无济于事。

谢谢你的帮助!

4

0 回答 0