2012-09-04 1 views
0

내 [NAnt] 빌드 프로세스에서 Microsoft.SqlServer.Smo.dll 버전 9.0.1399.0을 사용하고 있습니다. Windows Server 2008 R2를 실행 중입니다. 저는 Sql Server 2008 (10.5)뿐만 아니라 Sql Server 2008 (10.0)에도 연결하고 있습니다."ConnectAsUserName이 설정되지 않았습니다."하지만 해당 속성을 사용하지 않습니다.

나는 지금 내 그 "ConnectAsUserName가 설정되지 않았습니다"라는 오류를 던지고있는 2008R2 10.5 서버 (는 SQL 작업을 배포 구축합니다.

모든 우리의 프로젝트 형식 중 하나의 배포 단계를 조정하고있어

자격 증명을 지정하면 "이 SQL Server 버전 (10.5)은 지원되지 않습니다."

Windows 인증을 지정하면 "ConnectAsUserName이 설정되지 않았습니다."

내가 어디에서 볼 것인지 잘 모르겠다. 사용중인 코드는 다음과 같습니다.

using System; 
using System.Collections.Generic; 
using Microsoft.SqlServer.Management.Smo; 
using Microsoft.SqlServer.Management.Common; 
using Microsoft.SqlServer.Management.Smo.Agent; 

...

public void Schedule(string sqlServer, string userName, string password) 
{ 
    ServerConnection conn = new ServerConnection(sqlServer, userName, password); 
    conn.LoginSecure = false; 

    Server server = new Server(conn); 
    Schedule(server); 
} 

public void Schedule(string sqlServer) 
{ 
    ServerConnection conn = new ServerConnection(sqlServer); 
    conn.ConnectAsUser = false; 
    conn.LoginSecure = true; 

    Server server = new Server(conn); 
    Schedule(server); 
} 

public void Schedule(Server server) 
{ 
    server.JobServer.Refresh(); 
    JobType.Refresh(); 

    foreach (JobType job in Items) 
     job.Schedule(server); 
} 

또한, 여기에 오류의 스택 트레이스의 : 또한

Internal Error: Microsoft.SqlServer.Management.Common.PropertyNotSetException Property ConnectAsUserName was not set.

at Microsoft.SqlServer.Management.Common.ConnectionSettings.ThrowIfPropertyNotSet(String propertyName, String str, Boolean checkEmpty) at Microsoft.SqlServer.Management.Common.ConnectionManager.GetWindowsIdentityForConnection() at Microsoft.SqlServer.Management.Common.ConnectionManager.Connect()
at Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect() at Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion() at Microsoft.SqlServer.Management.Smo.ExecutionManager.GetServerVersion() at Microsoft.SqlServer.Management.Smo.SqlSmoObject.IsExpressSku()
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.CheckVersionNotExpress(String uft) at Microsoft.SqlServer.Management.Smo.Server.get_JobServer()
at SqlSchedule.Jobs.Schedule(Server server) at SqlSchedule.Jobs.Schedule(String sqlServer) at NAnt.MVST.Tasks.ImportJobsTask.ExecuteTask(String xmlJobs) at NAnt.MVST.Tasks.ImportJobsTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.TaskContainer.ExecuteChildTasks() at NAnt.Core.TaskContainer.ExecuteTask() at NAnt.Core.Task.Execute()
at NAnt.Contrib.Tasks.TryCatchTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.TaskContainer.ExecuteChildTasks() at NAnt.Core.Tasks.IfTask.ExecuteTask() at NAnt.Core.Task.Execute()
at NAnt.Core.TaskContainer.ExecuteChildTasks() at NAnt.Core.Tasks.IfTask.ExecuteTask() at NAnt.Core.Task.Execute()
at NAnt.Core.TaskContainer.ExecuteChildTasks() at NAnt.Core.Tasks.IfTask.ExecuteTask() at NAnt.Core.Task.Execute()
at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) at NAnt.Core.Tasks.CallTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.TaskContainer.ExecuteChildTasks() at NAnt.Core.Tasks.IfTask.ExecuteTask() at NAnt.Core.Task.Execute()
at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) at NAnt.Core.Tasks.CallTask.ExecuteTask() at NAnt.Core.Task.Execute() at NAnt.Core.Target.Execute() at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies) at NAnt.Core.Project.Execute() at NAnt.Core.Project.Run()

MSDN documentation이 속성은 Windows 인증을 사용하는 경우 무시 될 것이라고 주장한다 ...

stackoverflow에서 this post을 찾았으며 유일한 대답으로 모든 작업을 완료했습니다 (n 오아시스). 누구든지 아이디어가 더 있습니까?

답변

0

처음에 나는 답을 마치 this post에 모든 설정을했습니다. 그러나 추가 조사가 끝나자 제 어셈블리 중 하나가 100 대신 90 폴더에서 나왔습니다.