运行此查询:
select * from sys.dm_db_persisted_sku_features
Run Code Online (Sandbox Code Playgroud)
显示我正在使用分区:
| feature_name | feature_id |
|--------------|------------|
| Partitioning | 200 |
Run Code Online (Sandbox Code Playgroud)
我很确定我没有使用分区,因为这个数据库只是我的,它是用于咨询的。我使用简单的“创建表”语句创建了 3 个表。表上也没有索引。那么,为什么SQL Server 会说这个数据库是使用分区的呢?
这不是技术问题。我想知道在开发人员希望对所有事情都拥有 SA 的地方使用的最佳实践。
最近的事件是:
开发人员希望使用 BCP OUT 将数据快速导出到 txt 文件。
我应该怎么想?我应该说“为什么你需要这么快?”
我确信有很多替代方法可以将数据导出到 .TXT 文件。它们可能会更慢,但它可以完成工作。
我们在这里不使用 Windows 登录,只使用登录,所以我无法创建代理帐户(我正在阅读有关此的内容)。
注意:他们使用 Delphi 编写应用程序代码。
是否可以使用游标创建动态表,然后使用这些列聚合 SQL Server 2008 中的数据?
以下表为例。
CREATE TABLE Billing (
BillingId BIGINT IDENTITY,
SubscriptionId BIGINT,
ExternalServiceName VARCHAR(50),
BillYear INT NOT NULL,
BillMonth INT NOT NULL
);
INSERT INTO Billing (BillingId, SubscriptionId, ExternalServiceName,
BillYear, BillMonth)
VALUES (1, 1, 'Dogs', 2018, 4),
(2, 2, 'Cats', 2018, 4),
(3, 1, 'Dogs', 2018, 5),
(4, 2, 'Cats', 2018, 5);
CREATE TABLE BillingData (
BillingDataId INT IDENTITY PRIMARY KEY,
BillingId INT NOT NULL,
Feature VARCHAR(50) NOT NULL,
Usage INT NOT NULL,
Measurement VARCHAR(50),
Cost NUMERIC(18,2) …Run Code Online (Sandbox Code Playgroud) 在 SQL_Server 的更高版本中,我们在对象浏览器中查看事件文件以查看死锁图。这个特定的客户端有 SQL 2008(兼容性 2005),并且使用以下脚本从环形缓冲区中提取了唯一的死锁副本:
SELECT
xed.value('@timestamp', 'datetime2(3)') as CreationDate,
xed.query('.') AS XEvent
FROM
(
SELECT CAST([target_data] AS XML) AS TargetData
FROM sys.dm_xe_session_targets AS st
INNER JOIN sys.dm_xe_sessions AS s
ON s.address = st.event_session_address
WHERE s.name = N'system_health'
AND st.target_name = N'ring_buffer'
) AS Data
CROSS APPLY TargetData.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData (xed)
ORDER BY CreationDate DESC
Run Code Online (Sandbox Code Playgroud)
该格式与我们的 xdl 查看器不兼容。有没有办法从下面返回的 XML 中获取图表?:
<event name="xml_deadlock_report" package="sqlserver" id="123" version="1" timestamp="2018-07-04T00:15:14.667Z">
<data name="xml_report">
<type name="unicode_string" package="package0" />
<value><deadlock>
<victim-list>
<victimProcess id="process3cf048"/>
</victim-list>
<process-list>
<process …Run Code Online (Sandbox Code Playgroud) 我正在分析支持 3rd 方应用程序的 2008 实例。
该应用程序将生成 SQL 代码,然后将其作为临时查询发送到数据库。
我正在使用此查询(基于 Glenn Berry 脚本):
SELECT
qs.creation_time
,qs.last_execution_time
,qs.execution_count
,qs.total_worker_time
,qs.total_physical_reads
,qs.total_logical_writes
,qs.total_logical_reads
,qs.plan_handle
,qt.text
,qt.dbid
FROM
sys.dm_exec_query_stats AS qs WITH (NOLOCK)
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE
qt.dbid >= 7
OPTION (RECOMPILE)
Run Code Online (Sandbox Code Playgroud)
我的问题是我正在为非常相似的查询获得数千个计划,即
SELECT * FROM customers WHERE name = 'bob'
SELECT * FROM customers WHERE name = 'bill'
Run Code Online (Sandbox Code Playgroud)
(实际上查询非常大,最多 3000 个字符)
这使得将数据转换为适合高级分析的格式几乎是不可能的。
是否可以快速比较 2 个 SQL 查询并查看它们是否几乎相同?然后我会随机选择其中一个查询,并将所有活动与该查询进行分组。(我试过 DIFFERENCE 但速度很慢)
SQL 是否已经存储了一个类似于 MD5 Hash sql_handle 的值,它允许它查看两个查询是否相似并因此重用相同的计划?(如果存在这样的值,那么我会对此进行分组)
我对存储过程没有这个问题,因为正在重用相同的计划。我只想将所有类似的临时人员组合在一起。
我对数据库维护的世界很陌生,最近遇到了一个问题,希望得到您的建议。
我有一个数据库,我可以看到而没有任何损坏的最早的可靠备份文件属于 7 个月前。我已经为我当前的数据库运行了 DBCC CHECK DB,我发现索引存在问题。
当我比较数据库中的变化时,我意识到有人向子表添加了“唯一集群索引”。(不确定如何确定它是子表还是父表,但我认为它是子表)
我的问题是:是否可以通过应用“唯一集群索引”来打破子/父表关系中的记录?
我了解了集群索引和非集群索引是什么,但找不到一个可靠的文档来告诉我应用唯一集群索引是否会影响其他相关表?
感谢您在高级方面的帮助,如果您能指出任何链接以了解有关此主题的更多信息,我将不胜感激。
您应该多久更新一次统计数据?什么是“太少”?“太频繁”有多频繁?
答案是“这取决于”您的数据库、用户、数据等。
所以我试图在两个表中记录我们的统计数据随着时间的推移是什么样的。他们来了:
DROP TABLE /*IF EXISTS */ dbo.dm_db_stats_histogram
DROP TABLE /*IF EXISTS */ dbo.dm_db_stats_properties
go
CREATE TABLE dbo.dm_db_stats_properties(
dm_db_stats_propertiesID INT IDENTITY(1,1) NOT NULL constraint PK_dm_db_stats_properties PRIMARY KEY CLUSTERED,
DatabaseId INT NOT NULL,
object_id int NOT NULL,
stats_id int NOT NULL,
last_updated DATETIME2 NOT NULL,
rows BIGINT NOT NULL,
rows_sampled BIGINT NOT NULL,
steps int NOT NULL,
unfiltered_rows BIGINT NOT NULL,
modification_counter BIGINT NOT NULL,
persisted_sample_percent FLOAT NULL
, SampleDate DATETIME2 NOT NULL CONSTRAINT df_dm_db_stats_properties_SampleDate DEFAULT SYSUTCDATETIME()
)
GO
ALTER …Run Code Online (Sandbox Code Playgroud) sql-server-2008 sql-server statistics azure-sql-database sql-server-2017
我是 CTE 的忠实粉丝。他们是最棒的。你知道,我知道,我们都知道。
今天,如果将 CTE 写入真实表,我的查询速度会提高 1000 倍左右。
查询本身在链接中,但我怀疑它并不重要。为简化起见,我需要一份保险单中所有索赔的清单,其中一项索赔满足特定条件(cat = 1)。
简化版本如下所示:
with cat_claims as (select distinct pol_nbr from claims where cat = 1)
select * from claims c
inner join policies p on p.polnbr = c.polnbr
inner join cat_claims cat on c.pol_nbr= cat.pol_nbr
Run Code Online (Sandbox Code Playgroud)
这是超级骗子慢。如果我重写它看起来像这样:
with cat_claims as (select distinct claim_nbr from claims where cat = 1)
select * into cat_claims
from cat_claims
select * from claims c
inner join policies p on p.polnbr = c.polnbr
inner join cat_claims cat …Run Code Online (Sandbox Code Playgroud) 我想订购这张桌子,但我找不到让它工作的方法。你能帮助我吗?
我有这张桌子:
我需要这个:
我有一个列出文档的表,第一个字段是文档的 id,第二个字段代表父亲,所以我必须显示一个列表,您可以有序地看到 242 是第一个文档,252 和 335是从 242 生成的。
查询:
select * from table_name order by col1 ASC, Col2 ASC
Run Code Online (Sandbox Code Playgroud)
......对我不起作用。我做这个查询:
SELECT
FR1.[report_id],
FR1.[report_parent]
FROM [FARA_reports] FR1
WHERE
FR1.[report_is_delete] <> 1
AND FR1.[report_is_tmp] <> 1
ORDER BY
FR1.[report_id] asc,
FR1.[report_parent] desc
Run Code Online (Sandbox Code Playgroud)
这是我的第一张图片。
我有几个 SQL Server 2008 R2 标准版实例,我们需要将它们升级到 SQL Server 2008 R2 企业版。
如果我有有效的 SQL Server 2017 企业版(带 SA)PID,我是否需要有 SQL Server 2008 R2 企业版介质才能完成升级?
请不要建议我升级到 SQL Server 2017 - 目前这不是一个选项。多年来一直恳求管理层升级到更新版本,并用了 2 年以上的员工年时间进行回归测试。事务率/数据库大小的数量级增加甚至使版本升级获得批准。
问题是如何执行版本升级,而不是许可影响是什么。
我们的想法是运行 SQL Server 安装中心并选择维护 -> 版本升级可能会起作用,因为版本之间的基本位可能相同。我的猜测是唯一的区别是一些运行时开关、配置值等。因此企业版媒体可能不需要?
sql-server-2008 sql-server upgrade standard-edition enterprise-edition
sql-server ×10
sql-server-2008 ×10
deadlock ×1
dmv ×1
order-by ×1
pivot ×1
plan-cache ×1
statistics ×1
upgrade ×1