我当前的客户端需要能够查看 SQL Server Service Broker 队列中的消息。当前的实现使用 RECEIVE 和 rollback 来窥视。
由于这会生成对事务日志的写入,我想知道 SELECT TOP(1) 是否会返回与 RECEIVE 命令相同的行?
该队列有多个作者,但只有一个读者。
我正在研究备份+恢复方案,但遇到了一种我无法弄清楚如何处理它的情况。
我们有几个数据库,有时可能会在 20 到 30 分钟内没有任何活动。我们每 15 分钟设置一次事务日志备份。
我的问题是:
那段时间会有任何 TR 日志备份吗?
如果我碰巧恢复那些事务日志会发生什么?
对不起,我试图在不同的地方和书籍上寻找答案,但找不到。如果有人可以请帮助我。
先感谢您。
下一个警报已创建:
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)
我在历史选项卡中也没有事件:

我错过了什么?
此查询有效:
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) 这是我的完整表格:
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) 我试图在我的一个查询中使用 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) 我只是想知道如何从 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) 我只是想问如何比较两个数据库表,暂存表与操作表。
在我们进行转换并将其转换为正确的数据类型后,例如将flag列 (Y/N)转换nvarchar为bit或到int,如何比较两个表之间的数据?
我正在尝试提高由实体框架自动生成的特定查询的性能。我已经通过 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) 我有这个问题,我想从一个表中随机提取一些数据,我不想在这些提取之间重复记录,以便当我将所有不同的样本连接在一起时,它们看起来像主表。
我正在使用 sql server 2012
提前致谢
sql-server ×10
alerts ×1
backup ×1
etl ×1
except ×1
index-tuning ×1
performance ×1
restore ×1
substring ×1
syntax ×1
t-sql ×1
transaction ×1
xml ×1