我正在使用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) 进程如何读取自己的输出流?我正在编写自动化测试,该自动化测试在与测试相同的过程中启动了几个应用程序子流程(应用程序)。因此,标准输出是测试输出和应用程序输出的混合。
我想在运行时读取输出流,如果看到应用程序中的错误,则测试失败。这可能/可行吗?如果是这样,我该怎么办?
注意:我知道我可以将应用程序作为独立的进程启动,然后读取它们的输出流。我现在的工作量很大。
还要注意,这并不是Go单元测试中如何测试函数输出(stdout / stderr)的伪装,尽管该票据是相似且有用的。另一个问题是关于捕获单个函数调用的输出。该票证是关于连续读取整个流的信息。正确答案也有所不同-它需要管道。
在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以记录另一个请求?
如果这是不安全的,那么实施什么是安全的方法?
我是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) 关于配置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) 我正在使用带有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) 在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编码字节更好吗?
go ×2
log4net ×2
.net ×1
c# ×1
if-statement ×1
logging ×1
output ×1
outputstream ×1
routes ×1
scala ×1
slice ×1
spark-java ×1
specs2 ×1
sql ×1
sql-server ×1
string ×1
t-sql ×1
triggers ×1
utf-8 ×1