C# 我使用什么字符串连接到SQL Server?
我试图通过创建自定义活动来使用CRM工作流执行SQL作业。在我的代码中,一个在线教程让我在c中这样构造它:C# 我使用什么字符串连接到SQL Server?,c#,sql-server-2008,workflow-foundation-4,C#,Sql Server 2008,Workflow Foundation 4,我试图通过创建自定义活动来使用CRM工作流执行SQL作业。在我的代码中,一个在线教程让我在c中这样构造它: [CrmWorkflowActivity("A test activity to run SQL Jobs")] public sealed class ExecuteSQLJob : System.Activities.CodeActivity { #region Inputs [Input("Job Name")] [Default("BMS_ExtractT
[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();
}
}
}
}
很抱歉,我最初没有包含此内容,感谢您迄今为止的帮助尽管与问题不完全相关,但这是一个有用的书签,可帮助您正确设置连接字符串 对于SQL Server 2008,请在同一站点上查看此处 服务器字符串的部分如下所示: Server=myServerName\theInstanceName 您已经在上面的声明性语句中使用了正斜杠
[Input("Server Connection")]
[Default("HBSSQL2008/MSSQLSERVER")] //<--This String
public InArgument<String> ServerName { get; set; }
将其更改为:
[Input("Server Connection")]
[Default("HBSSQL2008\\MSSQLSERVER")] //<--This String
public InArgument<String> ServerName { get; set; }
可能需要用双斜杠将其转义。好的,我想我现在明白了 因为只有一个SQL实例在我们的服务器上运行,所以我实际上不需要使用ServerName\InstanceName格式。hbssql2008和hbssql2008都允许我连接。此外,IP也可以工作 另外,我遇到的另一个问题是,我使用的用户名和密码来自Windows集成安全性,而不是sql server的安全性。因此,我在服务器上创建了一个具有适当权限和sql安全信息的新帐户,它允许我连接
谢谢大家的帮助 假设HBSSQL2008是您网络上安装了SQL Server的机器的名称,并且有一个名为MSSQLSERVER的实例,那么应该可以工作。但是名称中可能有错误的斜杠-请改为使用反斜杠@HBSSQL2008\MSSQLSERVER。不过,您可能需要使用双反斜杠来转义反斜杠,因为它仍然适用于属性。这与工作流无关。请不要转载。您应该使用监视连接尝试。这将显示您是否正在到达服务器,并为您提供更多有关被弹回原因的详细信息。运行应用程序的用户帐户正在被sql server阻止或登录。您应该在那里查看帮助,或者域上存在安全问题。带着探查器的详细信息回来,我可以帮助您确定问题。谢谢Will。很抱歉重新发布,但是由于在弄乱了一些设置和做了一些其他事情后,错误发生在我身上,所以我试图将问题的焦点从连接字符串上移开。我将继续使用探查器,稍后再回来提供更多信息。或者@HBSSQL2008\MSSQLSERVER
[Input("Server Connection")]
[Default("HBSSQL2008\\MSSQLSERVER")] //<--This String
public InArgument<String> ServerName { get; set; }