小编Joe*_*moe的帖子

从存储过程记录SQL Server错误

我们的应用程序是Windows服务(用C++编写的本机.EXE),它调用SQL Server中的存储过程.在大多数情况下,存储过程中的错误(在90%的情况下,这些错误意味着我们的业务逻辑中存在错误)被重新抛出作为异常并被我们的服务捕获.然后,它们将在运行我们服务的计算机上的应用程序事件日志中登录.

但是,我现在需要在存储过程中记录SQL Server本身的一些错误.

遵循我们用于服务的范例,我想我可以使用xp_logevent在事件日志中保存错误信息.

这是记录SQL Server错误的推荐方法吗?

FWIW我使用的是SQL Server 2008

sql-server

9
推荐指数
2
解决办法
3万
查看次数

打开包含多个事件的ICS文件会在Outlook中创建新日历

我希望能够创建一个包含多个事件的ICS文件,用户可以在其默认的 Exchange日历中导入这些事件.我需要支持Outlook桌面客户端,Office 365 Web界面和Apple iPhone Mail/Calendar.

请注意,只有包含多个事件的ICS文件才会出现此问题.单事件ICS按预期工作.

以下多事件ICS文件:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//bobbin v0.1//NONSGML iCal Writer//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART:20180327T080000Z
DTEND:20180327T110000Z
DTSTAMP:20091130T213238Z
UID:1285935469767a7c7c1a9b3f0df8003a@yourserver.com
CREATED:20091130T213238Z
DESCRIPTION:Example event 1
LAST-MODIFIED:20091130T213238Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Example event 1
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
DTSTART:20180328T120000Z
DTEND:20180328T130000Z
DTSTAMP:20091130T213238Z
UID:1285935469767a7c7c1a9b3f0df8003b@yourserver.com
CREATED:20091130T213238Z
DESCRIPTION:Example event 2
LAST-MODIFIED:20091130T213238Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Example event 2
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)

在Office 365 Web界面和Apple iPhone Mail/Calendar中正常工作.但是,当它在Outlook 2016中导入时,它会创建一个新的"无标题"日历并将事件放入其中而不是默认用户日历.

这似乎是之前在SO上引用的一个已知问题:

ICal导入创建新日历打开ics文件时

将包含多个事件的ICS文件保存到我的日历,而不是其他日历

答案的范围从"它无法完成"到相反的范围.

第一个链接中的一个帖子提到X-WR-CALNAME从ICS 中删除 修复了该问题.我从未在ICS开始这样做过.

同一页面上的另一篇文章提到添加X-WR-RELCALID:XXXXXX修复它.我试过把它放入其中并没有任何区别.我不确定X-WR-RELCALID的值是否应设置为特定的值 - 我只是将其设置为某个GUID.

如果有人成功解决了这个问题 - 您是否可以发布ICS示例以及它使用的Outlook版本?

icalendar outlook

8
推荐指数
0
解决办法
962
查看次数

处理 .Net Core AppSettings/configuration 中带句点的键名

考虑以下appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",

  "NumberOfRetries": 5,
  "Option1": "abc",
  "Option2":  "def"

}
Run Code Online (Sandbox Code Playgroud)

为了读取NumberOfRetries以下类可以成功使用:

public class AppSettings
{
    public int NumberOfRetries { get; set; }
    public string Option1 { get; set; }
    public string Option2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Startup.cs 中包含以下代码:

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this …
Run Code Online (Sandbox Code Playgroud)

c# .net-core asp.net-core

8
推荐指数
1
解决办法
2758
查看次数

使用C#和.Net连接到远程队列管理器

我编写了一个使用此函数调用连接到本地队列管理器的应用程序:

MQQueueManager mqQMgr = new MQQueueManager("QM_QueueManagerName");
Run Code Online (Sandbox Code Playgroud)

现在我需要连接到另一台计算机上的远程队列管理器.

我可以使用MQ Explorer从我的开发PC使用QM_ComputerName队列管理器名称,S_ComputerName通道和ComputerName作为连接名称成功连接到远程队列管理器.所以可以从我的桌面访问它.

但是,当我尝试通过.Net连接时,MQRC_Q_MGR_NAME_ERROR无论我尝试什么,我都会得到.

我试过指定

MQEnvironment.Hostname = "ComputerName";
MQEnvironment.Channel = "S_ComputerName ";

and then calling

mqQMgr = new MQQueueManager("QM_ComputerName");

I also tried  calling 

mqQMgr = new MQQueueManager("QM_ComputerName", "S_ComputerName", "ComputerName");
Run Code Online (Sandbox Code Playgroud)

我在两种情况下都会出错.

有人可以提供建议吗?

c# ibm-mq

6
推荐指数
2
解决办法
2万
查看次数

.Net Core 是否支持每个环境的用户机密?

假设我有指定的开发环境的appsettings.Development.json连接字符串和指定的登台环境的连接字符串appsettings.Staging.json

在开发和暂存之间切换我需要做的就是导航到项目属性中的 Visual Studio 调试选项卡并更改ASPNETCORE_ENVIRONMENT环境变量的值。

现在,appsettings.*.json出于安全原因,我当然不想有连接字符串。所以我把它移到了 User Secrets。

问题是 - 似乎secrets.json所有环境都使用一个文件。没有secrets.Development.jsonsecrets.Staging.json。这意味着在我通过 Visual Studio Debug 选项卡从 Development 切换到 Staging 环境之后,我还需要手动更改连接字符串,secrets.json这违背了为环境提供内置支持的目的。

在每个环境的基础上不支持用户机密是否正确?如果是这样 - 是否有另一种方法可以避免在切换环境时手动修改 Secret 连接字符串?

visual-studio .net-core asp.net-core visual-studio-2019

6
推荐指数
2
解决办法
1198
查看次数

iTextSharp与iText

我正在重新设计使用iText 1.4.6.2的传统ASP.Net Web窗体应用程序

新的应用程序将使用ASP.Net MVC,但我不清楚更新版本的iText组件.

在NuGet存储库中有iTextSharp 5.5.10(Bruno Lowagie等人)和iText 7.0.1(iText软件).这两个包之间有什么关系/区别(最近都更新了)?

其他问题:

什么推荐用于新开发?

什么版本需要使用iText 1.4.6.2对遗留PDF生成代码进行最少的更改?

asp.net itext

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

从ASP.NET中转义JavaScript特殊字符

我在ASP.NET应用程序中有以下C#代码:

string script = @"alert('Message head:\n\n" + CompoundErrStr + " message tail.');";
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Test", script, true);
Run Code Online (Sandbox Code Playgroud)

CompoundErrStr是SQL Server生成的错误消息(从存储过程冒出的异常文本).如果它包含任何表列名,则它们用单引号括起来,并在执行期间中断JavaScript,因为单引号被视为字符串终止符.

作为单引号的修复,我将代码更改为:

CompoundErrStr = CompoundErrStr.Replace("'", @"\'");
string script = @"alert('Message head:\n\n" + CompoundErrStr + " message tail.');";
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Test", script, true);
Run Code Online (Sandbox Code Playgroud)

它现在工作正常.

但是,还有其他特殊字符需要像这样转义吗?是否有可用于此目的的.Net功能?类似于HttpServerUtility.HtmlEncode的东西,但是用于JavaScript.

编辑我使用.Net 3.5

javascript c# asp.net

4
推荐指数
2
解决办法
9678
查看次数

解决与“insert-if-not-exists”模式相关的数据库并发问题

我将 Entity Framework Core 3.1.8 与 SQL Server 2016 结合使用。

考虑以下示例(为了清晰起见,进行了简化):

数据库表定义如下:

CREATE TABLE [dbo].[Product]
(
    [Id] INT IDENTITY(1,1) NOT NULL , 
    [ProductName] NVARCHAR(500) NOT NULL,
    CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED (Id ASC) WITH (FILLFACTOR=80),
    CONSTRAINT [UQ_ProductName] UNIQUE NONCLUSTERED (ProductName ASC) WITH (FILLFACTOR=80) 
)
Run Code Online (Sandbox Code Playgroud)

以及以下 C# 程序:

using System;
using System.Linq;
using System.Reflection;

namespace CcTest
{
    class Program
    {
        static int Main(string[] args)
        {
            Product product =  null;

            string newProductName = "Basketball";

            using (CcTestContext context = new CcTestContext())
            using (var …
Run Code Online (Sandbox Code Playgroud)

c# sql-server concurrency entity-framework entity-framework-core

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

为什么在RETURN之后继续执行查询?

考虑以下脚本:

IF OBJECT_ID('tempdb.dbo.#INTERMED', 'U') IS NOT NULL
    DROP TABLE #INTERMED; 

IF OBJECT_ID('tempdb.dbo.#INTERMED1', 'U') IS NOT NULL
    DROP TABLE #INTERMED1; 

PRINT 'Inserting INTO #INTERMED'
GO

SELECT 11 AS Col1
INTO #INTERMED

RETURN -- Why does execution continue below this line?

PRINT 'Inserting INTO #INTERMED1' -- This doesn't print anything
GO
SELECT 'Testing testing 123' AS Col2 
INTO #INTERMED1

SELECT * FROM #INTERMED1 i
Run Code Online (Sandbox Code Playgroud)

当您在SSMS中运行它时,您会注意到忽略RETURN,RETURN之后的PRINT语句不执行任何操作,然后继续执行.

有人可以解释原因吗?我希望它在RETURN之后立即退出.

我确实发现它与GO语句有某种关联,因为如果我注释掉所有GO语句,它的行为与预期一样(在RETURN之后退出),但我仍然没有解释.

t-sql sql-server

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

datetimeoffset(SQL Server)的夏令时支持

如果您在MSDN中查看此帮助主题:

SQL Server日期和时间限制

它说:"没有服务器端夏令时(DST)支持datetimeoffset."

任何人都能解释这意味着什么吗?

我读它的方式是:说DST生效,我使用SYSDATETIMEOFFSET().结果以这种格式出现:

YYYY-MM-DD hh:mm:ss [.nnnnnnn] [{+ | - } hh:mm]

HH值将一个小时的背后我的实际的本地时间(好像DST未生效).是对的吗?

sql-server datetimeoffset dst

2
推荐指数
1
解决办法
1663
查看次数

如果有错误,想要在Build之后切换到错误列表

我使用VS 2008在C#中开发.

有没有办法配置VS 2008所以如果有Build Errors它会自动切换到"Error List"窗口?

visual-studio-2008

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

TortoiseSVN的本地钩子是什么?

我刚刚意识到TSVN支持本地挂钩.

有人能解释一下它们有用吗?

我已经使用服务器端挂钩强制为提交输入日志消息并阻止某些文件被检入; 还使用post-commit钩子在提交时发送电子邮件.

我们也使用AnkhSVN,我的理解是它不支持本地钩子,这是正确的吗?

svn tortoisesvn svn-hooks

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

如何在不使用RAISERROR()的情况下使T-SQL脚本失败?

这就是我想要完成的事情:

在SQL Server代理作业的第一步中检查数据库是否为只读.如果是这种情况 - 退出工作.

所以我想我将使用"高级属性"作业步骤,并选择"退出作业报告成功"为"失败阳离子:"

但是如何在不使用RAISERROR()的情况下使T-SQL脚本失败?原因我不想使用RAISERROR()是因为需要成为sysadmin服务器角色的成员才能使用它.

我找到了相当丑陋的方法 - 从表中选择一些不存在的东西,脚本看起来像这样:

declare @DBIsRO int;

SET @DBIsRO= (SELECT is_read_only
FROM sys.databases
WHERE name = 'test')

IF @DBIsRO=1 
   select * from dd -- table dd doesn't exist in current database
Run Code Online (Sandbox Code Playgroud)

然而,这看起来像一个kludge,我正在寻找一个"正确"的方法.

t-sql sql-server sql-server-2008

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