标签: sql-server

检查触发器是否被 INSERT 或 DELETE 触发

我知道这是您可以在本网站上找到的最简单的问题,但我无法在互联网上找到答案。

如何检查触发器是否由INSERT或触发DELETE

例子

CREATE TRIGGER [dbo].[TestTrigger]
On [dbo].[Table1]
AFTER INSERT, DELETE
AS
    --if save
    --do some work

    --else if delete
    --do some work other work
Run Code Online (Sandbox Code Playgroud)

如果是insert,我想做一些工作,如果是delete ,我想做一些其他工作。

请提供相同的代码片段。

trigger sql-server insert t-sql sql-server-2008-r2

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

在什么情况下我更有可能从异步自动更新统计信息中受益?

我每周使用Ola Hallengren 的解决方案更新统计数据。

根据下面的文章,我正在考虑启用 Auto Stats Async 并打开跟踪标志 2371。

具有大表的数据库应使用自动更新统计数据异步功能

现在,我的数据库的 async 选项为 false:

在此处输入图片说明

此外,来自SQL Server 2008 及更高版本的重要修补程序

此设置允许异步自动更新统计信息,同时您当前运行的查询继续使用旧统计信息,直到更新的统计信息可供使用,从而降低不可预测的查询性能。对此的替代方案(这是默认设置)是暂停查询执行(仅适用于使用该对象统计信息的查询),同时为该对象自动同步更新统计信息。根据对象的大小以及硬件和 I/O 子系统,这可能需要几秒钟到几分钟的时间。

题:

在测试环境中,在将 Auto Update Stats Async 设置为 ON 之前/之后,可以进行哪些好的简单测试?

在什么情况下我更有可能从异步自动更新统计信息中受益?

数据库 500GB+,大表。

sql-server optimization statistics sql-server-2014

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

如何查找分析服务器数据库的大小、名称等详细信息?

如何查找 Analysis Services 数据库的大小、名称和其他详细信息?

我有一台 Analysis Services 服务器,我可以在其中看到一个数据库。

我想知道这个数据库的大小和其他基本细节。

sql-server ssas

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

重叠的多列统计数据是多余的吗?

我运行了一个数据库引擎优化顾问会话DTA 来优化我的数据库。

DTA 提出了一些统计建议,但是,我注意到有些包含在其他中,例如在我下面的表 ProductIcon 中:

    CREATE STATISTICS [_dta_stat_172123954_1_2_3_4_5_12] 
ON [dbo].[ProductIcon]
([ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
    go

    CREATE STATISTICS [_dta_stat_172123954_11_1_2_3_4_5_12] 
ON [dbo].[ProductIcon]
([IconTypeID], [ClassID], [SegmentID], [GroupID], [Tier1], [LanguageID], [Active])
    go
Run Code Online (Sandbox Code Playgroud)

这是表定义:

    IF OBJECT_ID('[dbo].[ProductIcon]') IS NOT NULL 
    DROP TABLE [dbo].[ProductIcon] 
    GO
    CREATE TABLE [dbo].[ProductIcon] ( 
    [ClassID]      INT                              NOT NULL,
    [SegmentID]    INT                              NOT NULL,
    [GroupID]      INT                              NOT NULL,
    [Tier1]        VARCHAR(10)                      NOT NULL,
    [LanguageID]   SMALLINT                         NOT NULL  CONSTRAINT [DF_ProductIcon_LanguageID] DEFAULT ((1)),
    [Image]        VARCHAR(50)                      NOT NULL  CONSTRAINT [DF_ProductIcon_Image] DEFAULT (''),
    [Descr] …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server optimization statistics

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

SSMS 列中的 Wingdings 字体

我确实想创建一个应该有复选标记和十字标记的列。

这是我的查询的一部分:

iif(order_details.order_status = 'Y',char(252),char(251)) as [completed?]
Run Code Online (Sandbox Code Playgroud)

在 SSMS 中执行查询后,我得到这样的输出 - 'ü', 'û'

但我假设,如果在 SSMS 中从当前字体更改为Wingdings,我将得到检查和交叉标记,并且每个输出都将在 SSMS 中更改。但我只想更改列 completed?

这是我的结果:

在此处输入图片说明

有人可以帮我打勾和十字标记吗?

sql-server ssms sql-server-2014

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

由于报表生成器评估版本,SQL Server 标准许可证被覆盖

我的一位同事今天打电话给我,告诉我在我们的一台服务器上,SQL Server 已停止工作。如果他试图运行管理工作室,它会抛出错误并说The evaluation period has expired...

在此处输入图片说明

但该人声称最初他在服务器上安装了 SQL Server 2008 R2 标准版(许可副本),但后来有人错误地在该机器上安装了 Report Builder 3.0 企业评估版,导致 SQL 服务器许可证过期。

我从来没有听说过这样的事情。我认为 Report Builder 是一个客户端应用程序,只要您连接的服务器获得许可,您就应该能够使用它,但它永远不会影响它所连接的服务器上的许可。

无论如何,我连接到服务器本身并开始查看 Windows 日志以检查 SQL Server 何时安装。

在大约一年前安装 SQL Server 时的窗口日志中,SQL Server 安装期间的所有 MsiInstaller 事件都指向一个目录

C:\appstore\2008 R2 Standard\Standard Edition\x86\setup\.....
Run Code Online (Sandbox Code Playgroud)

我认为这表明它最初安装的是标准版,但在安装完成并首次启动sql server服务后,Windows日志显示以下内容:

在此处输入图片说明

问题 1

我的结论是正确的,即使这个人认为他安装了标准版的 sql server,它实际上是 sql server 的企业评估版??

问题2

报表生成器的企业评估版是否可能影响已安装的 SQL Server 标准的许可证并导致其过期?

sql-server sql-server-2008-r2

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

考虑有点重的数据库

环境信息

  • 操作系统:Windows Server 2012 R2(64 位)
  • 内存:16.00GB
  • CPU : Intel(R) Xeon(R) CPU E5-2609 @ 2.40GHz
  • SQL:Windows SQL Server 2012 标准版

简要数据库数据信息

  • 10多张表中,其中一张有varbinary(max)类型的列
  • 该表有超过1m的记录,每列都有缩略图数据,大约占20k

简表规格

  • 表名:注册缩略图
  • 列名:UserId、ThumbData、已创建、已更新
  • 列类型:int、varbinarymax、datetime、datetime
  • 已用空间信息:行:1,034,300 | 保留:34,092,160 KB | 数据:34,054,872 KB | 索引大小:31040 KB | 未使用:6248 KB

询问

SELECT * FROM RegisteredThumbnail WHERE UserId = 512315
Run Code Online (Sandbox Code Playgroud)

此查询需要大约 6:45 分钟才能获取预期的行。

为了克服这个问题,索引是我唯一的选择吗?

通过将二进制数据替换为图像 url 作为字符串数据来更改图像数据的存储方式会有很大帮助吗?

由于这是当前的操作系统,因此更改列并不是一个好主意。

任何想法将不胜感激。

尚未配置索引。

performance sql-server sql-server-2012 query-performance

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

PostgreSQL (PostGIS) 和 SQL Server (Spatial) 的结果差异

我有两点,我必须计算它们之间的差异。

我在 SQL Server 中使用以下查询。

SELECT geography::Point(27.185425, 88.124582, 4326)
       .STDistance(geography::Point(27.1854258, 88.124500, 4326));
Run Code Online (Sandbox Code Playgroud)

它运行良好,结果是:

8.12599260290125
Run Code Online (Sandbox Code Playgroud)

现在,当我在 PostgreSQL 中运行以下查询时,同样的情况。

SELECT ST_Distance(ST_GeomFromText('POINT(27.185425 88.124582)',4326),
                   ST_GeomFromText('POINT(27.1854258 88.124500)', 4326));
Run Code Online (Sandbox Code Playgroud)

现在结果是:

8.20039023523232
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么计算两点之间的距离时结果存在差异?

postgresql sql-server spatial postgis

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

我应该删除这个聚集索引吗?

我有很多设计类似于以下(稍微简化的)示例的表格。不同服务器上的原始表有 50,000 到 200,000 行(大约 12,000 - 150,000 页)。

CREATE TABLE [dbo].[PWS] (
    [ID]             UNIQUEIDENTIFIER NOT NULL,
    [PWFID]     UNIQUEIDENTIFIER NOT NULL,
    [SuID]         UNIQUEIDENTIFIER NULL,
    [Title]         varchar(500),
    [SITime]     DATETIME         NULL,
    [Status]      INT,
    [ActionUserID]                UNIQUEIDENTIFIER NULL,
 --   […]
    CONSTRAINT [PK_PWS] PRIMARY KEY NONCLUSTERED ([ID] ASC) WITH (FILLFACTOR = 90),
    CONSTRAINT [FK_PWS_PW] FOREIGN KEY ([PWFID]) REFERENCES [dbo].[PW] ([ID]) ON DELETE CASCADE NOT FOR REPLICATION,
    CONSTRAINT [FK_PWS_Status] FOREIGN KEY ([Status]) REFERENCES [dbo].[Status] ([Status]) NOT FOR REPLICATION
);

CREATE CLUSTERED INDEX [IX_Clustered]
    ON [dbo].[PWS]([PWFID] ASC) …
Run Code Online (Sandbox Code Playgroud)

index sql-server clustered-index sql-server-2008-r2 nonclustered-index

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

登录 Always On 可用性组

我是 Always On Availability Groups 的新手,我对创建登录名有点困惑。

让我们假设一个环境 NODE1(Primary) & NODE2(secondary) & NODE3(Stand by) & VAEWI(Listener)。

  1. 我需要创建一个 SQL 身份验证登录。

    为此,我假设我需要通过连接到将在所有节点中同步的侦听器来创建它。

  2. 我需要创建一个 Windows 身份验证。

    为此,我认为,因为所有节点在创建可用性组之前都是窗口集群的。因此,我们需要在主节点中创建一个 Windows 用户 1st,然后通过连接到侦听器来创建 Windows 身份验证。

谁能告诉我我的假设是否正确?

sql-server sql-server-2012 availability-groups sql-server-2014

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