我正在使用NLog将错误从Winform .NET应用程序记录到文件和数据库表中。数据库表托管在SQL Server 2014上。
NLog配置文件如下所示。日志成功写入文件。
如果将SQL Server安装为默认实例,我可以使用完全相同的配置文件成功地登录到数据库表。
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="Nlog.log">
<targets>
<target name="file" xsi:type="File" layout="${longdate}|${level}|${callsite}|${logger}|${threadid}|${windows-identity:domain=false}--${message} ${exception:format=message,stacktrace:separator=*" fileName="My.Application.log" />
<target name="database" type="Database">
<connectionString>Data Source=ABC\DEV01;Initial Catalog=my_database;User Id=user01;Password=Password01;Application Name=My Application;Failover Partner=XYZ\DEV01</connectionString>
<commandText>
INSERT INTO tb_system_logging(log_date,log_level,log_logger,log_message,log_machine_name, log_user_name, log_call_site, log_thread, log_exception, log_stacktrace) VALUES(@time_stamp, @level, @logger, @message, @machinename, @user_name, @call_site, @threadid,
@log_exception, @stacktrace);
</commandText>
<parameter name="@time_stamp" layout="${longdate}" />
<parameter name="@level" layout="${level}" />
<parameter name="@logger" layout="${logger}" />
<parameter name="@message" layout="${message}" />
<parameter name="@machinename" layout="${machinename}" />
<parameter name="@user_name" layout="${windows-identity:domain=true}" />
<parameter name="@call_site" layout="${callsite:filename=true}" />
<parameter name="@threadid" layout="${threadid}" />
<parameter name="@log_exception" layout="${exception}" />
<parameter name="@stacktrace" layout="${stacktrace}" />
</target>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="file" />
<logger name="*" minlevel="Info" appendTo="database" />
</rules>
</nlog>
当我在同时承载SQL server实例的开发服务器上运行应用程序时,我看到以下错误记录到内部日志文件NLog.Log中。
2015-08-25 23:41:27.0999 Error Error when writing to database System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): The network path was not found
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)我已检查SQL server是否允许远程连接,以及服务器上是否启用了TCP/IP和命名管道协议。
非常感谢您的帮助。
问候
詹姆斯
发布于 2015-08-27 05:51:09
这似乎是你的连接字符串的一个问题。也许这会有帮助:how to solve the system.data.sqlclient.sqlexception (0x80131904) error
https://stackoverflow.com/questions/32225891
复制相似问题