小编the*_*ski的帖子

如何添加"IF NOT EXISTS"来创建触发器语句

我正在使用sql server 2008 R2.更具体地说,Microsoft SQL Server 2008 R2(RTM) - 10.50.1600.1(X64)2010年4月2日15:48:46版权所有(c)Windows NT 6.1上的Microsoft Corporation标准版(64位)(Build 7601:Service Pack 1) )(管理程序).我是sql server和procedures/triggers的新手.我有以下代码来创建一个触发器(它工作):

CREATE TRIGGER [dbo].[Insert_WithdrawalCodes] 
   ON  [dbo].[PupilWithdrawalReason] 
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;
        UPDATE [dbo].[PupilWithdrawalReason] SET DateCreated=dbo.SYSTEMTIME() 
        WHERE WithdrawalCodeID IN (SELECT WithdrawalCodeID FROM inserted)
END
Run Code Online (Sandbox Code Playgroud)

仅当触发器尚不存在时,如何有条件地创建?我在这做错了什么?Stackoverflow有很好的"如果不存在"的例子,但我不能让它与CREATE一起工作.这是我失败的努力之一:

IF NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'TR' AND name = 'Insert_WithdrawalCodes')
   exec('CREATE TRIGGER [dbo].[Insert_WithdrawalCodes] ON  [dbo].[PupilWithdrawalReason] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE [dbo].[PupilWithdrawalReason] SET DateCreated=dbo.SYSTEMTIME() WHERE WithdrawalCodeID IN (SELECT WithdrawalCodeID FROM …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server triggers if-statement

34
推荐指数
4
解决办法
7万
查看次数

进程可以读取自己的“标准输出”流吗?

进程如何读取自己的输出流?我正在编写自动化测试,该自动化测试在与测试相同的过程中启动了几个应用程序子流程(应用程序)。因此,标准输出是测试输出和应用程序输出的混合。

我想在运行时读取输出流,如果看到应用程序中的错误,则测试失败。这可能/可行吗?如果是这样,我该怎么办?

注意:我知道我可以将应用程序作为独立的进程启动,然后读取它们的输出流。我现在的工作量很大。

还要注意,这并不是Go单元测试如何测试函数输出(stdout / stderr)的伪装,尽管该票据是相似且有用的。另一个问题是关于捕获单个函数调用的输出。该票证是关于连续读取整个流的信息。正确答案也有所不同-它需要管道。

multithreading outputstream go output

7
推荐指数
1
解决办法
86
查看次数

log4net.GlobalContext.Properties是否每个请求不同?

在log4net中,我想为特定的http请求的每个日志语句附加一个请求id.请求ID在多个请求中是不同的.在我的global.asax.cs中,我分配了一个requestId.

   protected void Application_BeginRequest(object sender, EventArgs e)
    {

        log4net.GlobalContext.Properties["requestId"] =
    System.Guid.NewGuid().ToString();
      log.Info("Starting request.");  
    }
Run Code Online (Sandbox Code Playgroud)

在我的Log4Net.config中,我将requestId添加到我的模式布局中:

<layout type="log4net.Layout.PatternLayout">
 <param name="ConversionPattern" value="%property{requestId} %d [%t] %-5p %c %m%n"/>
</layout>
Run Code Online (Sandbox Code Playgroud)

是使用GlobalContext设置变量线程安全的方法吗?我是否有并发http请求的风险,不安全地更改requestId以记录另一个请求?

如果这是不安全的,那么实施什么是安全的方法?

.net c# logging log4net asp.net-web-api

5
推荐指数
1
解决办法
4419
查看次数

sparkjava:路由必须是main方法吗?

我是sparkjava的新手,总体上喜欢它.但是,是否必须在main方法中定义新的路由/端点?对于任何重要的Web应用程序,这将导致一个非常长的主方法,或者我需要有多个主要方法(因此在多个实例之间拆分服务器资源).

这两个sparkjava文档页面似乎在main方法中定义了路径:http://sparkjava.com/documentation.html#routes 和http://sparkjava.com/documentation.html#getting-started.

有没有其他方法可以做到这一点,我没有看到?粗略的谷歌搜索没有向我展示更好的方式......

=========

以下是我根据安德鲁的答案做的完整解决方案.在我看来,在main方法之外添加端点应该是sparkjava文档页面的一部分:

主要方法:

public static void main(String[] args) {
    //Do I need to do something more with the Resource instance so that sparkjava notices it and/or reads the routes?
    Resource resource= new Resource(new Service());
}
Run Code Online (Sandbox Code Playgroud)

我的资源:

import static spark.Spark.*;
class Resource{

    private Service service;

    Resource(Service service){
        this.service = service;
        setupEndpoints();
    }

    private void setupEndpoints() {

        get("/user/:id", "application/json",(request, response)
                -> service.find(request.params(":id")), new JsonTransformer());

        get("/users", "application/json", (request, response)
                -> service.findAll(), new JsonTransformer());
    }
} …
Run Code Online (Sandbox Code Playgroud)

routes spark-java

5
推荐指数
2
解决办法
4598
查看次数

还有一个:没有创建log4net日志文件

关于配置log4net有很多问题/答案,我一直在看它们.是时候问我自己的问题了.我的问题是我的"Web api"Web服务不会创建日志文件.我想在以下位置创建日志文件:C:\ Logs.我已经仔细检查过我有权写入此文件夹.另外,我们使用log4net进行功能测试,当我运行测试时,会创建FunctionalTests.log文件.因此,我认为我们可以排除权限.

我在这做错了什么?

我在AssemblyInfo.cs文件中有这一行:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)

我的应用程序启动时调用XmlConfigurator.Configure().在我的调试器中,我可以看到Application_Start被命中并且调用了Configure()方法:

public class WebApiApplication : HttpApplication
{
    protected void Application_Start()
    {
        XmlConfigurator.Configure();
        HibernateConfig.InitHibernate();
    }
Run Code Online (Sandbox Code Playgroud)

这是我的Log4Net.config文件,位于我项目的根级别:

<log4net debug="true">
  <!-- Level 1 -->
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\Logs\WebAPI.log"/>
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="2" />
    <maximumFileSize value="1000MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
     <param name="ConversionPattern" value="%d %property{X-CLIENT-REQUEST-ID} %property{X-REQUEST-ID} [%t] %-5p %c %m%n"/>
    </layout>
  </appender>

  <appender name="RequestLogAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\Logs\WebAPIRequests.log"/>
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <appendToFile …
Run Code Online (Sandbox Code Playgroud)

log4net asp.net-web-api

4
推荐指数
1
解决办法
2260
查看次数

使用"in new WithApplication"时如何在specs2中进行设置/拆卸

我正在使用带有Scala 2.10.2(运行Java 1.7.0_51)构建的play 2.2.1的Specs2.我一直在阅读有关如何使用Specs2进行设置/拆卸的内容.我看过使用"After"特征的例子如下:

class Specs2Play extends org.specs2.mutable.Specification {
  "this is the first example" in new SetupAndTeardownPasswordAccount {
    println("testing")
  }
}

trait SetupAndTeardownPasswordAccount extends org.specs2.mutable.After {
  println("setup")

  def after  = println("teardown ")
}
Run Code Online (Sandbox Code Playgroud)

这很好,除了我的所有测试都使用"在新的WithApplication中".看来我需要的是一个既是"WithApplication"又是"After"的对象.下面不编译,但基本上是我想要的:

trait SetupAndTeardownPasswordAccount extends org.specs2.mutable.After with WithApplication
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,如何在已经使用"InApplication"的测试中添加setup/teardown?我主要担心的是我们所有的测试都使用了这样的伪路由(所以他们需要With Application).

val aFakeRequest = FakeRequest(method, url).withHeaders(headers).withBody(jsonBody)
val Some(result) = play.api.test.Helpers.route(aFakeRequest)
result
Run Code Online (Sandbox Code Playgroud)

scala playframework specs2

3
推荐指数
1
解决办法
2821
查看次数

我可以破坏[] byte和字符串之间的数据转换吗?

在Go中,如果我从字符串-> [] byte转换,或者相反,从[] byte->字符串转换,数据是否可能会损坏。例如,假设我已定义:

fooBytes := []byte(fooString)
fooConvertedBack := string(fooBytes
fooBytesConvertedBack := []byte(fooConvertedBack)
Run Code Online (Sandbox Code Playgroud)

然后我们可以得到数据损坏的情况:

fooString != fooConvertedBack
fooBytes != fooBytesConvertedBack
Run Code Online (Sandbox Code Playgroud)

我猜这里的答案是否定的。我正在使用字节的随机数组,因此我想确保不会破坏数据,因为例如golang字符串具有默认字符集,该字符集不允许完全随机的字节。

base64编码字节更好吗?

string utf-8 character-encoding go slice

0
推荐指数
1
解决办法
86
查看次数