C# NLog数据库目标找不到表

C# NLog数据库目标找不到表,c#,asp.net-mvc-2,nlog,C#,Asp.net Mvc 2,Nlog,我正在使用NLog 1.0,并具有以下配置文件: 数据库 将值(@Message,@Level,@CreatedOn)插入日志(Message,Level,CreatedOn); 这几乎是nlog提供的codeplex示例的复制粘贴。在我的global.ascx中,我将其记录为“Application Started!”,只是为了测试日志记录是否正常工作,但这正是问题开始的地方(顺便说一下,文件目标运行良好,它只是数据库目标): 在我看来很直截了当,一定是打字错误。我检查SQL Profi

我正在使用NLog 1.0,并具有以下配置文件:


数据库
将值(@Message,@Level,@CreatedOn)插入日志(Message,Level,CreatedOn);

这几乎是nlog提供的codeplex示例的复制粘贴。在我的global.ascx中,我将其记录为“Application Started!”,只是为了测试日志记录是否正常工作,但这正是问题开始的地方(顺便说一下,文件目标运行良好,它只是数据库目标):

在我看来很直截了当,一定是打字错误。我检查SQL Profiler并得到以下结果:

exec sp_executesql N'
            INSERT INTO Logs (Message, Level, CreatedOn) VALUES (@message, @level, @createdOn);
        ',N'@message nvarchar(20),@level nvarchar(4),@createdOn nvarchar(19)',@message=N'Application Started!',@level=N'Info',@createdOn=N'06/25/2010 23:59:30'
我的表格创建代码如下:

CREATE TABLE Logs (
Id INT IDENTITY(1, 1) NOT NULL,
[Level] VARCHAR(5) NOT NULL,
[Message] VARCHAR(4095) NOT NULL,
CreatedOn DATETIME NOT NULL,

CONSTRAINT PK_Logs PRIMARY KEY (Id)
)
有什么想法吗,我肯定错过了一些简单的东西


我设法让这个工作,并有一种感觉,我的连接字符串是问题。当commandtext更改为:

USE xxxx INSERT INTO dbo.Logs (Message, Level, CreatedOn) VALUES (@message, @level, @createdOn);

所有作品,我会尝试一些连接字符串,如果你知道任何与NLog工作请让我知道

检查数据库表的名称空间。您可以使用“dbo”(用于数据库所有者)作为表名的前缀,如下所示:

CREATE TABLE dbo.Logs (
[Id] INT IDENTITY(1, 1) NOT NULL,
[Level] VARCHAR(5) NOT NULL,
[Message] VARCHAR(4095) NOT NULL,
[CreatedOn] DATETIME NOT NULL,

CONSTRAINT PK_Logs PRIMARY KEY (Id)
)
创建表时,表的命名空间可能为someName.logs。然后可以在XML文件中指定全名,如下所示:

INSERT INTO dbo.Logs (Message, Level, CreatedOn) VALUES (@message, @level, @createdOn);

为了解决这个问题,我向目标添加了“dbDatabase”参数,如下所示:


在dbo.Logs(Message,Level,CreatedOn)中插入值(@Message,Level,CreatedOn);

我已经检查了它,它在dbo模式中,我还尝试将它添加到脚本中,但没有成功“无效对象名'dbo.Logs'”。这没有任何意义,因为SQL概要文件脚本会执行。这是NLog中的错误吗?或者其他人使用数据库日志记录是否正常?
INSERT INTO dbo.Logs (Message, Level, CreatedOn) VALUES (@message, @level, @createdOn);