사용자 지정 작업을 만들어 CRM 워크 플로를 사용하여 SQL 작업을 실행하려고합니다. 나는이 워크 플로를 실행하려고하면SQL Server에 연결할 때 어떤 문자열을 사용해야합니까?
[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("HBSSQL2008/MSSQLSERVER")] //<--This String
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)); //<--Is used here
try
{
server.ConnectionContext.LoginSecure = false;
server.ConnectionContext.Login = UserName.Get(context);
server.ConnectionContext.Password = Password.Get(context);
server.ConnectionContext.Connect();
Job job = server.JobServer.Jobs[JobName.Get(context)];
job.Start();
}
finally
{
if (server.ConnectionContext.IsOpen)
{
server.ConnectionContext.Disconnect();
}
}
}
}
그러나, 그것은 서버에 연결할 수 없다는 오류가 발생합니다 : 내 코드에서, 온라인 자습서 날 (C#에서) 이런 식으로 구성했다. (특히 server.ConnectionContext.Connect() 메서드 호출에서 오류가 발생합니다.
문제는 serverName 문자열입니까? 그렇다면 어떻게 올바른 serverName을 사용할 수 있는지 확인할 수 있습니까?
도움 주셔서 감사합니다.
편집 : 다음은 몇 가지 추가 정보가의 ... 이것은 내가 서버 및 인스턴스가 처음으로 이름을 가지고 어떻게
:
그리고 여기 CRM 워크 플로에 오류 발생 :
를Workflow suspended temporarily due to error: Unhandled Exception: Microsoft.SqlServer.Management.Common.ConnectionFailureException: Failed to connect to server HBSSQL2008.
at Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
at ExecuteSQLJob.ExecuteSQLJob.Execute(CodeActivityContext context)
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
Inner Exception: System.Data.SqlClient.SqlException: Login failed for user 'rnkelch'.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect(WindowsIdentity impersonatedIdentity)
at Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
죄송합니다. 원본을 포함시키지 않아서 죄송합니다. 지금까지 도와 주셔서 감사합니다.
'HBSSQL2008'은 SQL Server가 설치된 네트워크의 컴퓨터 이름이고'MSSQLSERVER'라는 인스턴스가 있다고 가정하면 작동합니다.하지만 이름에 슬래시가있을 수 있습니다. 역 슬래시 ('@ "HBSSQL2008 \ MSSQLSERVER")를 사용하십시오. –
백 슬래시를 이스케이프 처리하려면 이중 백 슬래시가 필요할 수도 있습니다. 실제로는 여전히 속성에 적용됩니다. – Charleh
이것은 워크 플로우와 아무 관련이 없습니다. 그리고 다시 게시하지 마십시오. [Profiler] (http://msdn.microsoft.com/en-us/library/ms181091.aspx)를 사용하여 연결 시도를 관찰해야합니다. 서버에 도달하는 경우 표시되며, 반송 이유에 대해 자세히 설명합니다. 응용 프로그램을 실행중인 사용자 계정이 SQL Server 또는 로그인에서 차단되었거나 ([dba.se]에서 도움말을 확인해야 함) 도메인에 보안 문제가 있습니다. 프로필러 세부 정보로 돌아와서 문제를 파악하는 데 도움을 드릴 수 있습니다. – Will