我有许多使用 SQL Server 2008 的客户端,这也是我服务器上的客户端。我使用备份文件在客户和我的办公室之间来回发送数据库。
我读到当您从 SQL Server 2012 创建备份时,无法将其还原到 2008 实例。我认为兼容性级别会解决这个问题,但事实并非如此。因此,我不知道如何升级。除了一次升级所有客户端(这是不可能的)之外,我想不出干净的方法来做到这一点。
我需要将数据库发送到客户端以及从客户端接收数据库。这是我在 SQL Server 上的第一次版本升级,所以我是这个问题的新手。关于如何进行的任何想法?
假设我有表 A:BookingsPerPerson
Person_Id ArrivalDate DepartureDate
123456 2012-01-01 2012-01-04
213415 2012-01-02 2012-01-07
Run Code Online (Sandbox Code Playgroud)
我需要通过视图实现以下目标:
Person_Id ArrivalDate DepartureDate Jan-01 Jan-02 Jan-03 Jan-04 Jan-05 Jan-06 Jan-07
123456 2012-01-01 2012-01-04 1 1 1 1
213415 2012-01-02 2012-01-07 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
该系统用于活动,因此每次酒店预订可能需要 1 到 15 天的时间,但不会超过此时间。任何想法将不胜感激。
我今天在 SQL Server 上遇到了一些有趣的行为(在 2005 年和 2012 年观察到),我希望有人能解释一下。
使用=NVARCHAR 字段进行比较的查询会忽略字符串中的尾随空格(或在比较之前自动修剪值),但使用like运算符的同一查询不会忽略该空格。2012 年使用的排序规则是 Latin1_General_CI_AS。
考虑这个 SQL 小提琴:http ://sqlfiddle.com/#! 6/72262/4
请注意,like运算符不会返回尾随空格字符串的结果,但=运算符会返回。为什么是这样?
加分项:我无法在 VARCHAR 字段上复制它,我原以为在两种数据类型中都会以相同的方式处理空间 - 这是真的吗?
我发现以下查询可以按数据库检测 CPU 使用率,但它们显示不同的结果:
WITH DB_CPU_Stats
AS
(
SELECT DatabaseID, DB_Name(DatabaseID) AS [DatabaseName],
SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (
SELECT CONVERT(int, value) AS [DatabaseID]
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID
)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [row_num],
DatabaseName,
[CPU_Time_Ms],
CAST([CPU_Time_Ms] * 1.0 / SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPUPercent]
FROM DB_CPU_Stats
--WHERE DatabaseID > 4 -- system databases
--AND DatabaseID <> 32767 -- ResourceDB
ORDER BY row_num …Run Code Online (Sandbox Code Playgroud) 我们的一台生产服务器在日志中报告错误
错误:701,严重性:17,状态:123
。资源池“内部”中的系统内存不足,无法运行此查询。
我搜索了这个错误,发现它是一个错误,并且有一个带有 service pack 2 的热修复。这些是服务器的详细信息:
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 标准版(64 位)
处理器数量:24(有 2 个 NUMA 节点,每个有 12 个内核)
内存:为 SQL Server 分配 24GB RAM。
查询批量/分钟:5000+
我的问题是
编辑内存状态:
MEMORYBROKER_FOR_RESERVE (internal) Pages ---------------------------------------- ---------- Allocations 200362 Rate 4510 Target Allocations 200362 Future Allocations 588626 Overall 2521497 Last Notification 0
MEMORYBROKER_FOR_STEAL (internal) Pages ---------------------------------------- ---------- Allocations 431548 Rate 1973 Target Allocations 323529 Future Allocations 0 Overall 2521497 Last Notification 2
MEMORYBROKER_FOR_CACHE (internal) Pages …Run Code Online (Sandbox Code Playgroud) 我正在优化一些查询。
对于下面的查询,
SET STATISTICS IO ON;
DECLARE @OrderStartDate DATETIME2 = '27 feb 2016';
DECLARE @OrderEndDate DATETIME2 = '28 feb 2016';
SELECT o.strBxOrderNo
, o.sintOrderStatusID
, o.sintOrderChannelID
, o.sintOrderTypeID
, o.sdtmOrdCreated
, o.sintMarketID
, o.strOrderKey
, o.strOfferCode
, o.strCurrencyCode
, o.decBCShipFullPrice
, o.decBCShipFinal
, o.decBCShipTax
, o.decBCTotalAmount
, o.decWrittenTotalAmount
, o.decBCWrittenTotalAmount
, o.decBCShipOfferDisc
, o.decBCShipOverride
, o.decTotalAmount
, o.decShipTax
, o.decShipFinal
, o.decShipOverride
, o.decShipOfferDisc
, o.decShipFullPrice
, o.lngAccountParticipantID
, CONVERT(DATE, o.sdtmOrdCreated, 120) as OrderCreatedDateConverted
FROM tablebackups.dbo.tblBOrder o
WHERE o.sdtmOrdCreated >= …Run Code Online (Sandbox Code Playgroud) performance sql-server optimization index-tuning sql-server-2014 query-performance
我们的一位开发人员添加了以下代码以从表中删除重复记录:
DELETE SubQuery
FROM
(
SELECT ID
,FK1
,FK2
,CreatedDateTime
,ROW_NUMBER() OVER(PARTITION BY FK1, FK2 ORDER BY CreatedDateTime) AS RowNumber
FROM Table
)
AS SubQuery
WHERE RowNumber > 1
Run Code Online (Sandbox Code Playgroud)
在查看代码时,我认为它不起作用,但是在我们的测试环境 (SQL 2014) 中测试它表明它起作用了!
SQL 如何知道解析子查询并从中删除记录table?
CACHESTORE_SQLCP Sql 计划在几天后占用 > 38 GB。
我们已经在运行“优化临时工作负载”选项。(实体框架和自定义报告创建了很多临时!)
具有多可用区镜像的 AWS RDS 上的 SQL Server 2016 SE 3.00.2164.0.v1
当我运行时:
DBCC FREESYSTEMCACHE('SQL Plans');
Run Code Online (Sandbox Code Playgroud)
或者
DBCC FREEPROCCACHE
Run Code Online (Sandbox Code Playgroud)
或者
DBCC FREESYSTEMCACHE ('SQL Plans') WITH MARK_IN_USE_FOR_REMOVAL
Run Code Online (Sandbox Code Playgroud)
或者
DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;
Run Code Online (Sandbox Code Playgroud)
它似乎没有清除它:
SELECT TOP 1 type, name, pages_kb FROM sys.dm_os_memory_clerks ORDER BY pages_kb desc
type name pages_kb
CACHESTORE_SQLCP SQL Plans 38321048
Run Code Online (Sandbox Code Playgroud)
我在启用查询存储的情况下运行,但我禁用了它以查看是否有任何干扰,它似乎没有帮助,但我将其关闭。
真正奇怪的是
SELECT COUNT(*) FROM sys.dm_exec_cached_plans
Run Code Online (Sandbox Code Playgroud)
是 1-3 左右(它似乎只显示显示当前正在运行的查询),即使所有内存都已保留,甚至在我尝试清除任何内容之前。我错过了什么?
CACHESTORE_SQLCP 占用了所有可用内存的 60% 以上,这是一个问题,因为偶尔会发生内存等待。此外,我们不得不在周末终止一个持续 4 小时的例行 DBCC CHECKDB,因为内存不足导致等待(它立即完成,没有错误,打开 PHYSICAL_ONLY)。
有没有办法回收这些内存(除了每晚重启!?)?
当我跑
SELECT * FROM …Run Code Online (Sandbox Code Playgroud) 如果文件组包含列存储索引,则似乎设置文件组以read_only防止dbcc checkdb整个数据库。尝试运行checkdb或checkfilegroup(对于数据库中的任何文件组,包括读写辅助文件和[PRIMARY])时,将返回以下错误...
Msg 8921, Level 16, State 1, Line 24
Check terminated. A failure was detected while collecting facts.
Possibly tempdb out of space or a system table is inconsistent. Check previous errors.
Run Code Online (Sandbox Code Playgroud)
是否有支持在只读文件组中存储列存储数据的方法?还是在这种情况下我无法进行完整性检查?
create database check_fg_ro
go
use check_fg_ro
go
exec sp_changedbowner 'sa';
go
alter database check_fg_ro add filegroup check_fg_ro_2;
alter database check_fg_ro
add file (
name='check_fg_ro_2'
,filename='C:\check_fg_ro_2.ndf'
) to filegroup check_fg_ro_2;
go
create table …Run Code Online (Sandbox Code Playgroud) sql-server filegroups columnstore dbcc-checkdb read-only-database
我知道隐式类型转换不是一个好习惯。但当较低的值突然变得较高时,这确实是意想不到的行为。
declare @LastSelectedDate DATETIME = '2021-11-09 13:52:29.187'
declare @LastSelectedDate_1 DATETIME2(7) = '2021-11-09 13:52:29.1866667'
SELECT IIF(@LastSelectedDate_1 > CAST(@LastSelectedDate AS DATETIME2), 1, 0)
SELECT IIF(@LastSelectedDate_1 > @LastSelectedDate, 1, 0)
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我遗漏了什么?我正在使用 SQL Server 2016。
sql-server ×10
optimization ×2
performance ×2
amazon-rds ×1
columnstore ×1
datetime ×1
datetime2 ×1
dbcc-checkdb ×1
filegroups ×1
index-tuning ×1
memory ×1
pivot ×1
subquery ×1