可能重复:
我使用什么字符串连接到 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();
}
}
}
}
}
此外,我已按照本网站的所有说明进行操作,但无济于事。
谢谢你的帮助!