标签: sql-server

SELECT(不带 ORDER BY)是否返回与 RECEIVE 相同的消息?

我当前的客户端需要能够查看 SQL Server Service Broker 队列中的消息。当前的实现使用 RECEIVE 和 rollback 来窥视。

由于这会生成对事务日志的写入,我想知道 SELECT TOP(1) 是否会返回与 RECEIVE 命令相同的行?

该队列有多个作者,但只有一个读者。

sql-server service-broker

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

事务日志备份

我正在研究备份+恢复方案,但遇到了一种我无法弄清楚如何处理它的情况。

我们有几个数据库,有时可能会在 20 到 30 分钟内没有任何活动。我们每 15 分钟设置一次事务日志备份。

我的问题是:

那段时间会有任何 TR 日志备份吗?

如果我碰巧恢复那些事务日志会发生什么?

对不起,我试图在不同的地方和书籍上寻找答案,但找不到。如果有人可以请帮助我。

先感谢您。

sql-server backup transaction restore transaction-log

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

级别 16 的 Throw 和 RaiseError 不会导致发生警报

下一个警报已创建:

USE [msdb]
GO

/****** Object:  Alert [Notify]    Script Date: 09/09/2014 11:38:31 ******/
EXEC msdb.dbo.sp_add_alert @name=N'Notify', 
        @message_id=0, 
        @severity=16, 
        @enabled=1, 
        @delay_between_responses=0, 
        @include_event_description_in=0, 
        @category_name=N'[Uncategorized]', 
        @job_id=N'00000000-0000-0000-0000-000000000000'
GO
Run Code Online (Sandbox Code Playgroud)

我希望下一个代码会导致它发生:

THROW 51000, 'The record does not exist.', 1;
Run Code Online (Sandbox Code Playgroud)

或者下一个代码:

 RAISERROR ('Error raised.', 16,  1);
Run Code Online (Sandbox Code Playgroud)

系统消息不包含错误消息:

SELECT *
FROM sys.messages  
WHERE language_id = 1033 
and severity>=16
ORDER BY severity asc, message_id asc
Run Code Online (Sandbox Code Playgroud)

我在历史选项卡中也没有事件: 在此处输入图片说明


我错过了什么?

sql-server sql-server-2012 sql-server-agent alerts

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

为什么 ASC 和 DESC 出现在 *CASE 子句之后?

此查询有效:

DECLARE @Ordering NVARCHAR(50)
SET @Ordering = 'aggregateid'

DECLARE @OrderDirectionInt INT
SET @OrderDirectionInt = 0 --1

SELECT * FROM (
    SELECT
        ROW_NUMBER() OVER (ORDER BY
            CASE WHEN LOWER(@Ordering) = 'aggregateid' AND @OrderDirectionInt = 1 THEN AggregateId END DESC,
            CASE WHEN LOWER(@Ordering) = 'aggregateid' AND @OrderDirectionInt = 0 THEN AggregateId END ASC
        ) AS RowNumber,
        MyField
    FROM
        MyTable
) AS TempResults
WHERE TempResults.RowNumber BETWEEN 12 AND 23
Run Code Online (Sandbox Code Playgroud)

我不明白的是,为什么ASC和DESC在后(或外)的CASE语句。看起来ASC和DESC被无条件地放入,这是没有意义的......它可能会解决:

ROW_NUMBER() …
Run Code Online (Sandbox Code Playgroud)

sql-server syntax

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

为什么 SQL Server 不使用我的非聚集索引并执行聚集索引扫描?

这是我的完整表格:

    CREATE TABLE [dbo].[tblCrawlUrls](
    [cl_IdUrl] [int] IDENTITY(1,1) NOT NULL,
    [cl_CrawlNormalizedUrl] [nvarchar](200) NOT NULL,
    [cl_RooSiteId] [smallint] NOT NULL,
    [cl_ExploreDate] [datetime] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_ExploreDate]  DEFAULT (sysutcdatetime()),
    [cl_LastCrawlDate] [datetime] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_LastCrawlDate]  DEFAULT ('2000-08-11 15:18:47.407'),
    [cl_CrawlSource] [nvarchar](max) NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_CrawlSource]  DEFAULT ('null'),
    [cl_CrawlOrgUrl] [nvarchar](200) NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_CrawlOrgUrl]  DEFAULT ('null'),
    [cl_ExploredURL] [nvarchar](200) NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_ExploredURL]  DEFAULT ('null'),
    [cl_Ignored_By_Containing_Word] [bit] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_Ignored_By_Containing_Word]  DEFAULT ((0)),
    [cl_CrawlFailedTimes] [int] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_CrawlFailedTimes]  DEFAULT ((0)),
    [cl_TotalCrawlTimes] [int] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_TotalCrawlTimes] …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2014 query-performance

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

为什么这个参数化的 sql 不返回任何东西,而非参数化的呢?

我试图在我的一个查询中使用 sql 参数,并注意到当我这样做时,它只是不返回任何东西!而无参数化的一个工作得很好。
为什么 ?
无参数化一:

string columnCommentsQuery = string.Format("SELECT   * FROM   ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', '{0}', 'column', default)", table[2].ToString());

    DataTable comments = new DataTable();
    SqlCommand sql = new SqlCommand(columnCommentsQuery, conn);
    conn.Open();
    SqlDataAdapter da = new SqlDataAdapter(sql);
    da.Fill(comments);
    conn.Close();
Run Code Online (Sandbox Code Playgroud)

参数化一:

string columnCommentsQuery = "SELECT   * FROM   ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', @tb, 'column', default)";
     DataTable comments = new DataTable();
     SqlCommand sql = new SqlCommand(columnCommentsQuery, conn);
     sql.Parameters.AddWithValue("tb", "'" + table[2].ToString() + "'");
     conn.Open();
     SqlDataAdapter da = new SqlDataAdapter(sql);
     da.Fill(comments);
     conn.Close();
Run Code Online (Sandbox Code Playgroud)

sql-server

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

从 xml 列中提取整数值

我只是想知道如何从 XML 列中提取一个整数。目前所有的数字都是 4,下面的查询可以做到。但是这个数字很快就会增长到 10,000 个,这意味着 5 位数,这个查询将无法做到。无论如何,我是否可以动态地从 Xml 列的中间<siteID>和中间取出任何整数</siteID>。任何建议将不胜感激。

SELECT 
SUBSTRING(msg, patindex('%[0-9][0-9][0-9][0-9]</siteID>%',msg),4)  AS DOMAIN
FROM table  a(NOLOCK)
WHERE msg like '<DLR%'
ORDER BY 1 DESC
Run Code Online (Sandbox Code Playgroud)

xml sql-server t-sql substring

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

如何比较暂存表和操作表之间的数据?

我只是想问如何比较两个数据库表,暂存表与操作表。

在我们进行转换并将其转换为正确的数据类型后,例如将flag列 (Y/N)转换nvarchar为bit或到int,如何比较两个表之间的数据?

sql-server etl except

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

SSMS 缺失索引功能建议的这两个索引是否应该合并?

我正在尝试提高由实体框架自动生成的特定查询的性能。我已经通过 SSMS 运行了查询,它建议创建两个缺失的索引。有问题的表:

CREATE TABLE [dbo].[PackageEvents]
(
[EventID] [int] NOT NULL IDENTITY(1, 1),
[PackageID] [char] (24) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[EventDescription] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[EventDate] [datetime] NOT NULL,
[UserName] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Notes] [varchar] (max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[IsSynchronized] [bit] NOT NULL CONSTRAINT [DF_AmazonPackageEvents_IsSynchronized]  
  DEFAULT ((0)),
[LastSyncDate] [datetime] NULL,
[Version] [timestamp] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

SSMS 建议了以下两个索引:

CREATE NONCLUSTERED INDEX [IX_IsSynchronized] ON [dbo].[PackageEvents]  
([IsSynchronized]) INCLUDE ([PackageID])

CREATE NONCLUSTERED INDEX [IX_Covering] ON [dbo].[PackageEvents] ([PackageID])  
INCLUDE …
Run Code Online (Sandbox Code Playgroud)

database-design sql-server index-tuning sql-server-2012

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

如何从表中获取随机样本?我不想在样本之间重复记录

我有这个问题,我想从一个表中随机提取一些数据,我不想在这些提取之间重复记录,以便当我将所有不同的样本连接在一起时,它们看起来像主表。

我正在使用 sql server 2012

提前致谢

sql-server

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