标签: sql-server-2008

为什么我的数据库使用分区?(我知道不是)

运行此查询:

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 会说这个数据库是使用分区的呢?

sql-server-2008 sql-server

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

处理想要使用 XP_CMDSHELL 到 BCP OUT 的开发人员的最佳实践

这不是技术问题。我想知道在开发人员希望对所有事情都拥有 SA 的地方使用的最佳实践。

最近的事件是:

开发人员希望使用 BCP OUT 将数据快速导出到 txt 文件。

我应该怎么想?我应该说“为什么你需要这么快?”

我确信有很多替代方法可以将数据导出到 .TXT 文件。它们可能会更慢,但它可以完成工作。

我们在这里不使用 Windows 登录,只使用登录,所以我无法创建代理帐户(我正在阅读有关此的内容)。

注意:他们使用 Delphi 编写应用程序代码。

sql-server-2008 sql-server

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

在 sql server 中使用汇总进行透视

是否可以使用游标创建动态表,然后使用这些列聚合 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-2008 sql-server pivot

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

可以从 SQL Server 2008 中的环形缓冲区中提取的死锁 xml 创建图表吗?

在 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>&lt;deadlock&gt;
 &lt;victim-list&gt;
  &lt;victimProcess id="process3cf048"/&gt;
 &lt;/victim-list&gt;
 &lt;process-list&gt;
  &lt;process …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server-2008 sql-server deadlock

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

将 sys.dm_exec_sql_text 中的相似查询组合在一起

我正在分析支持 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 的值,它允许它查看两个查询是否相似并因此重用相同的计划?(如果存在这样的值,那么我会对此进行分组)

我对存储过程没有这个问题,因为正在重用相同的计划。我只想将所有类似的临时人员组合在一起。

sql-server-2008 sql-server dmv plan-cache

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

DBCC 唯一簇索引损坏

我对数据库维护的世界很陌生,最近遇到了一个问题,希望得到您的建议。

我有一个数据库,我可以看到而没有任何损坏的最早的可靠备份文件属于 7 个月前。我已经为我当前的数据库运行了 DBCC CHECK DB,我发现索引存在问题。

当我比较数据库中的变化时,我意识到有人向子表添加了“唯一集群索引”。(不确定如何确定它是子表还是父表,但我认为它是子表)

我的问题是:是否可以通过应用“唯一集群索引”来打破子/父表关系中的记录?

我了解了集群索引和非集群索引是什么,但找不到一个可靠的文档来告诉我应用唯一集群索引是否会影响其他相关表?

感谢您在高级方面的帮助,如果您能指出任何链接以了解有关此主题的更多信息,我将不胜感激。

sql-server-2008 sql-server

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

您应该多久更新一次统计数据?

您应该多久更新一次统计数据?什么是“太少”?“太频繁”有多频繁?

答案是“这取决于”您的数据库、用户、数据等。

所以我试图在两个表中记录我们的统计数据随着时间的推移是什么样的。他们来了:

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

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

为什么将 CTE 写入实际表会提供性能改进?

我是 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)

sql-server-2008 sql-server

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

按两列排序表

我想订购这张桌子,但我找不到让它工作的方法。你能帮助我吗?

我有这张桌子:

桌子

我需要这个:

另一个

我有一个列出文档的表,第一个字段是文档的 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 sql-server order-by

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

SQL Server 2008 R2 版升级过程

我有几个 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

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